WEB开发网
开发学院软件开发VC 窗口类、窗口类对象与窗口三者之间关系 阅读

窗口类、窗口类对象与窗口三者之间关系

 2008-11-24 19:38:12 来源:WEB开发网   
核心提示: 其中,我们定义的CWnd类的CreateEx函数需要完成创建窗口的工作,窗口类、窗口类对象与窗口三者之间关系(3),这可以利用Win32提供的SDK函数:CreateWindowEx函数来实现,该函数返回一个句柄,从例3-19所示代码可知,我们定义的CWnd类的后两个函数(ShowWind

其中,我们定义的CWnd类的CreateEx函数需要完成创建窗口的工作,这可以利用Win32提供的SDK函数:CreateWindowEx函数来实现。该函数返回一个句柄,标识它所创建的窗口。这里,我们就可以利用已定义的CWnd类的成员变量m_hWnd来保存这个窗口句柄。因为我们定义的CreateEx函数返回值是个BOOL型,所以应该判断一下这个窗口句柄。根据其值是否为空来决定函数是返回TRUE值,还是FALSE值。

读者应注意的是,在实际开发时,应该初始化m_hWnd变量,这可以在构造函数中实现,给它赋一个初值NULL。这里我们只是为了演示CWnd类是如何与窗口关联起来的,因此就不进行初始化工作了。

接下来定义ShowWindow函数的实现。同样,需要调用Platform SDK函数,即ShowWindow来完成窗口的显示。为了区分这两个同名函数,在调用这个Platform SDK函数时,前面加上作用域标识符(即::)。这种以“::”开始的表示方法表明该函数是一个全局函数,这里表示调用的ShowWindow函数是Platform SDK函数。因为CreateEx函数已经获取了窗口句柄并保存到m_hWnd成员变量中,所以,ShowWindow函数可以直接把这个句柄变量作为参数来使用。

提示:读者在定义自己的成员函数时,如果调用的API函数名与自己的函数名不同,那么该API函数名前可以加也可以不加“::”符号,编译器会自动识别API函数。但是如果当前定义的成员函数与内部调用的API函数名相同,那么后者前面必须加“::”符号,否则程序在编译或运行时就会出错。

我们自己定义的UpdateWindow函数的实现比较简单,直接调用SDK函数:UpdateWindow完成更新窗口的工作。

从例3-19所示代码可知,我们定义的CWnd类的后两个函数(ShowWindow和UpdateWindow)内部都需要一个窗口句柄,即需要知道对哪个窗口进行操作。

上一页  1 2 3 4 5  下一页

Tags:窗口 窗口 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接