码迷,mamicode.com
首页 > 其他好文 > 详细

窗口类型注册类

时间:2014-08-19 12:52:54      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   os   数据   2014   问题   

从前面的窗口程序可以看到,这个程序主要做了三件事情,第一件是注册窗口,第二件是创建窗口,第三件是显示窗口。从程序的代码上,很容易就看出来每个函数是在做什么事情,这典型是基于函数式的编程,行云如流水般。对于小的程序,这样的编程方式是没有什么问题。现在我们来考虑一下如果要注册多个窗口,创建多个窗口和显示多个窗口,再使用这样的函数代码,就比较难复用了。因而随着编程技术发展和软件项目的增大,目前普遍基于面向对象编程,这样可以很方便地构思多个窗口的注册、创建和显示。比如可以把注册窗口封装为一个类,如果要创建多个窗口,就创建多个对象就可以了。一个对象就是数据结构加算法,因此普通的对象都有成员变量和成员函数。至于是否面向对象编程,不是在于你使用什么语言,而是在于你在编程时使用的思想。只要使用了数据结构加算法这种封装的思想,就是在使用面向对象编程。像不支持面向对象编程的C语言在Linux内核编程里,开发人员也使用这种思想在编程。因而语言支持面向对象编程,只是提供更加方便的工具,不是关键因素,关键还是在于开发人员的思维模式而不是工具。在Python里也提供支持面向对象编程,它有自己的类定义方式。

窗口类型注册类

先来看一下例子代码,如下:

#开发人员:蔡军生(QQ9073204) 深圳  2014-8-15

#窗口类型注册类
class WinClassMaker:
    def __init__(self, wndProc, className, hInst):
        self.wndClass = WNDCLASSEX()
        self.wndClass.cbSize = sizeof(WNDCLASSEX)
        self.wndClass.style = CS_HREDRAW | CS_VREDRAW
        self.wndClass.lpfnWndProc = wndProc
        self.wndClass.cbClsExtra = 0
        self.wndClass.cbWndExtra = 0
        self.wndClass.hInstance = hInst
        self.wndClass.hIcon = 0
        self.wndClass.hCursor = 0
        self.wndClass.hBrush = windll.gdi32.GetStockObject(WHITE_BRUSH)
        self.wndClass.lpszMenuName = 0
        self.wndClass.lpszClassName = className
        self.wndClass.hIconSm = 0
    def Register(self):
        return windll.user32.RegisterClassExW(byref(self.wndClass))

从这段代码看来,Python的类定义是采用关键字class为开头,接着是类名称WinClassMaker,它的后面是冒号(:),最后是类的代码块。Python的关键字与c++语言里的关键字是一样的,不过它的构造函数、析构造函数与C++语言的就有比较大的差别了。Python类的构造函数是__init__函数,而析构函数是__del__函数。构造函数__init__是在一个类里自动地最先地执行的函数,因此所有创建的代码大多数放在这里,比如定义成员变量。析构函数__del__是在一个类里最后自动地调用的函数,主要用来释放占用的资源。一个类拥有这种属性,是方便来组织资源管理的,以便解决资源分配之后忘记去调用删除的动作,把调用时机都交编译器去处理,这样就大大地提高了开发者的效率,不用费心去关心资源删除的问题。另外类的复用就是数据结构和函数的复用,由于这些函数都是针对这些数据结构的编写,因此出错机会也减少很多。最后使用类还可以把数据结构放在类里面,只要使用它提供的函数就可以了,这样当函数名称不变时,但类的成员变量改变了以及它的算法产生了改变,就可以让外面的调用者不用去修改代码,不用感知这种变化。


窗口类型注册类,布布扣,bubuko.com

窗口类型注册类

标签:style   blog   color   使用   os   数据   2014   问题   

原文地址:http://blog.csdn.net/caimouse/article/details/38680075

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!