Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1716994
  • 博文数量: 263
  • 博客积分: 1218
  • 博客等级: 少尉
  • 技术积分: 2862
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-19 02:33
文章分类

全部博文(263)

文章存档

2020年(12)

2019年(2)

2018年(10)

2016年(1)

2015年(20)

2014年(115)

2013年(46)

2012年(37)

2011年(20)

分类: Windows平台

2014-03-18 15:52:24

一.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
阅读(970) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~