一.1.
WM_CREATE
对应宏ON_WM_CREATE(), 然后写个函数afx_msg void OnCreate()来做相应的处理,注意这个函数名是定了的,可不能改的.
该消息是指窗口创建(实际上是显示之前)时发出,所以OnCreate就是在窗口显示之前做些初始化设置.窗口的创建应该是实例化一个窗口类,debug时看到肯定是先调用构造函数,然后才调用到OnCreate函数的
二. WM_INITDIALOG消息:
我们用ClassWizard不是可以加入消息WM_INITDIALOG的消息响应函数么?那这条消息到底是MFC还是我们的函数在处理?看看MFC为我们生成的这条消息的处理函数吧,其实,它不是个消息处理函数,只是一个虚函数罢了!如下:
函数的声明(Prototype):
virtual BOOL OnInitDialog();
注意,函数的声明前面,也没有消息前缀:afx_msg,察看消息映射宏,你找不到类似下面的消息映射:
ON_WM_INITDIALOG()
注意,没有这样的消息映射,看看msdn中,你发现,其实它只是一个虚函数!只是该虚函数在MFC的WM_INITDIALOG消息处理中被调用了,这就是全部。
而我们自己初始化时代码应该放的地方是: CDialog对话框类的OnInitDialog()消息处理函数中, CApp类的应该放在OnInitialInstance 中.(孙鑫C++)转:
二
WM_CLOSE. WM_DESTROY和 WM_QUIT
菜单或点击 X 时-->WM_CLOSE( 系统发出 ) -->DefWindowProc() ( 处理 WM_CLOSE ) -->DestroyWindow() ( 被DefWindowProc()调用,销毁窗口,但程序没结束 )
--->WM_DESTROY ( 由DestroyWindow()发出 )--->PostQuitMessage()-->WM_QUIT-->GetMessage()-->程序结束
OnClose与OnDestroy关系
close是关闭窗口,destroy是销毁窗口.关闭窗口跟隐藏窗口很类似(只不过完全看不到了,但拥有的资源没被释放).destroy是真正的销毁窗口释放资源.
一般的调用顺序是这样:
(1).用户点击关闭发送WM_CLOSE消息,然后OnClose函数做相应处理,例如你可能弹出对话框问用户是否确定关闭不.如果点否定就没关闭窗口又返回原样.如果确定则调用DestroyWindows().
(2).DestroyWindows中发送WM_DESTROY消息
(3).处理WM_DESTROY消息,并调用PostQuitMessage(),发送WM_QUIT消息.结束消息循环.
转: http://blog.csdn.net/weiwenhp/article/details/8643429
阅读(1041) | 评论(0) | 转发(0) |