vc中wm_create、wm_initdialog消息出现顺序及调用方式

vc中wm_create、wm_initdialog消息出现顺序及调用方式

ID:5997450

大小:130.03 KB

页数:7页

时间:2017-12-30

vc中wm_create、wm_initdialog消息出现顺序及调用方式_第1页
vc中wm_create、wm_initdialog消息出现顺序及调用方式_第2页
vc中wm_create、wm_initdialog消息出现顺序及调用方式_第3页
vc中wm_create、wm_initdialog消息出现顺序及调用方式_第4页
vc中wm_create、wm_initdialog消息出现顺序及调用方式_第5页
资源描述:

《vc中wm_create、wm_initdialog消息出现顺序及调用方式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、VC中WM_CREATE、WM_INITDIALOG消息出现顺序及调用方式wxleasyland@sina.com2012.7wxleasyland试验:VC建的标准WIN32-HELLOWORLD程序中:1.在CreateWindow()前面加上语句WinExec("cmd/kechonowcallCreateWindow()",SW_SHOW);Sleep(5000);2.在CreateWindow()后面加上语句WinExec("cmd/kechoCreateWindow()RETURN",SW_SHOW);3.在WndProc()

2、中加上caseWM_CREATE:WinExec("cmd/kechoWndProc():WM_CREATE:appear!",SW_SHOW);Sleep(5000);break;4.运行,发现,先出现nowcallCreateWindow()、再WndProc():WM_CREATE:appear!、最后CreateWindow()RETURN。结论:CreateWindow()是在运行后、返回前,发送消息WM_CREATE,并阻塞!WM_CREATE消息直接发给消息处理函数WndProc()执行!而不是通过消息队列(GetMessa

3、ge、DispatchMessage等)!!其实就是CreateWindow()直接拿消息WM_CREATE去调用WndProc()!!!!!如果WndProc()返回0,CreateWindow()正常返回hWnd。如果WndProc()返回-1,CreateWindow()销毁窗口,并返回NULL。所以WM_CREATE时,CreateWindow()内部已经创建好窗口了,但还没有返回,还没有hWnd!即窗口真正还没有创建结束。这时这里不能有对窗口上的控件操作的函数,不然就会“程序执行了非法操作”。比如GetDlgItem等。标准WI

4、N32程序中,是先RegisterClassEx()注册窗口类->再CreateWindow()创建窗口->再ShowWindow()显示出窗口->再UpdateWindow()立即用WM_PAINT刷新窗口->再LoadAccelerators()->再进入消息循环(GetMessage、DispatchMessage等)在MFC对话框中,试验,是:先WM_CREATE,这时窗口未显示出来->再WM_INITDIALOG,这时窗口仍未显示出来->OnInitDialog()运行完毕后,窗口才显示出来(应是默认通过ShowWindow()

5、)。====================================hp://msdn.microso.com/en-us/library/windows/desktop/ms632619(v=vs.85).aspxWM_CREATEmessageSentwhenanapplicationrequeststhatawindowbecreatedbycallingtheCreateWindowExorCreateWindowfunction.(Themessageissentbeforethefunctionreturns.这个消息

6、在函数返回前被发送)Thewindowprocedureofthenewwindowreceivesthismessageafterthewindowiscreated,butbeforethewindowbecomesvisible.AwindowreceivesthismessagethroughitsWindowProcfunction.窗口通过WindowProc函数来接收这个消息!Ifanapplicationprocessesthismessage,itshouldreturnzerotocontinuecreationoft

7、hewindow.Iftheapplicationreturns–1,thewindowisdestroyedandtheCreateWindowExorCreateWindowfunctionreturnsaNULLhandle.处理这个消息的程序应返回0,如果返回-1,则窗口被销毁并且CreateWindow返回NULL。CreateWindowfunctionCreatesanoverlapped,pop-up,orchildwindow.Itspecifiesthewindowclass,windowtitle,windowsty

8、le,and(optionally)theinitialpositionandsizeofthewindow.Thefunctionalsospecifiesthewindow'sparent

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。