Visual C++ MFC 简明教程(4)
2007-03-18 21:27:52 来源:WEB开发网要注意的是消息映射中的ON_WM_SIZE入口没有参数。你在MFC文档中CWnd类,消息映射中的ON_WM_SIZE入口总是调用OnSize函数,并且该函数必须接收三个参数。OnSize函数必须是消息映射所属类的成员函数,并且该函数必须用afx_msg来说明(正如上面在CButtonWindow的定义中所见到的一样)。
如果你查看MFC文档,就会发现CWnd中有近100名为“On...”的函数。CWnd::OnSize是其中之一。所有这些函数都在消息映射中有形如ON_WM_对应的标签。例如,ON_WM_SIZE对应OnSize。ON_WM_入口不接收任何参数,如ON_BN_CLICKED一样。参数是假设的并自动传递给相应的如OnSize的“On...”函数。
重复一遍,因为它很重要: OnSize函数总是与消息映射中的ON_WM_SIZE入口想对应。你必须命名处理函数OnSize, 并且它必须接收三个参数。不同的函数的参数会有所不同。
上面的代码中在OnSize函数自身的内部,有三行代码修改了按钮在窗口中的尺寸。你可以在该函数中输入任何你想要的代码。
调用GetClientRect是为了恢复窗口用户区域的新尺寸。该矩形会被缩小,并调用按钮的MoveWindow函数。MoveWindow是从CWnd继承来的,改变尺寸和移动子窗口是在一步完成的。
当你执行上面改变窗口大小的程序时,你就会发现按钮自己能正确地改变大小。在代码中,变尺寸事件他国消息映射中的OnSize函数而产生一调用,它调用MoveWindow函数来改变按钮的大小。
窗口消息
查看MFC文档,你可以看到主窗口处理的各种各样的CWnd消息。有些与我们上面介绍的类似。例如,ON_WM_MOVE消息是当用户移动窗口时发送的消息,ON_WM_PAINT消息是当窗口的任何部分需要重画时发出的。至今为止,我们的所有程序,重画工作都是自动完成的,因为是控制自己来负责其外观。如果你自己使用GDI命令来在用户区域中绘制,应用程序就应负责重画工作。因此ON_WM_PAINT就变得重要了。
- ››Visual Basic 2008 数学函数
- ››Visual Studio2005中Smart Device的问题
- ››Visual Studio 中根据数据库字段动态生成控件
- ››Visual Studio 11全新黑色主题
- ››Visual Studio 2011 Beta新特性(一):安装VS201...
- ››MFC中有多个slider时OnHScroll函数判断方法
- ››MFC自绘按钮
- ››Visual Studio自定义调试窗体两个小技巧
- ››Visual Studio 2005 Team Edition for Database P...
- ››Visual C#两分钟搭建BHO IE钩子
- ››Visual C++优化对大型数据集合的并发访问
- ››VISUAL C++中的OCX控件的使用方法
更多精彩
赞助商链接