现在的位置: 首页 > 综合 > 正文

窗口创建类

2018年01月18日 ⁄ 综合 ⁄ 共 1347字 ⁄ 字号 评论关闭

在前面已经学习怎么样把注册窗口的功能封装成类的形式,接着下来就是创建窗口的功能,而这部分功能又是怎么样编写才是最合适的呢,以便后面所有开发工作都可以复用这些代码。我们来仔细地分析一下窗口上主要有什么东西是可变的,什么东西不变的,原则上就是把可变的东西变成通过函数方式来改变,不变的东西放在类内部,这样减少类的使用者在细节上考虑的问题。目前来看,一个窗口最容易变化的就两样东西:窗口类型,指明这个窗口是属于那一个种类的,比如EditList等;另外一个就是窗口的标题,因为软件的使用者只能从窗口的标题去区分相同类型的窗口。其实这两点就是从不同的角度去区分窗口的需求,窗口类型是从开发者角度去看不同窗口的类型;窗口的标题是从使用者角度去看不同窗口的功能区分。有这两点思路之后,就可以来编写这个类的代码了,完整的代码如下:

#开发人员:蔡军生(QQ:9073204) 深圳  2014-8-20
#创建窗口
class WinMaker:
    def __init__(self, className, hInst):
        self.className = className
        self.hInst = hInst
        self.style = WS_OVERLAPPEDWINDOW | WS_CAPTION
        self.exStyle = 0
        self.x = CW_USEDEFAULT
        self.y = 0
        self.width = CW_USEDEFAULT
        self.height = 0
        self.hWndParent = HWND(0)
        self.hMenu = HWND(0)
        self.wndCreatData = c_void_p(0)
    def Create(self, title):
        self.hWnd = windll.user32.CreateWindowExW(
            self.exStyle, self.className, title,
            self.style,
            self.x, self.y,
            self.width, self.height,
            self.hWndParent,
            self.hMenu, 
            self.hInst, 
            self.wndCreatData)
    
        if not self.hWnd:
            print('Failed to create window')
            exit(0)
        return self.hWnd

classPython类的关键字,主要用来定义类名称。WinMaker是我命名的创建窗口的类名称,以后就可以使用这个类来创建很多很多窗口,而不再需要拷贝粘贴N多的代码。接着下来就看到__init__构造函数,在这个构造函数里主要一件事情,就是创建窗口所有需要的参数。在这个构造函数的参数列表里,className是窗口类型的名称;hInst是窗口属于应用实例的句柄。创建时,其它窗口参数都使用默认的参数。当然你如果想控制更多的窗口属性,那可添加到参数列表里。最后定义了Create函数来创建窗口的操作,在这个操作里通过参数传递窗口的标题title进来,从而达到让窗口显示不同的名称。在这段代码里,主要使用到Python的类三个特性,一个是Python类的构造函数__init__;一个是Python类的成员函数Create;一个是Python类的成员变量,如self.className = className

抱歉!评论已关闭.