欢迎来到天天文库
浏览记录
ID:5997450
大小:130.03 KB
页数:7页
时间:2017-12-30
《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
此文档下载收益归作者所有