C++ 一个疑惑,while(getmessage)这个循环是个死循环,除了WM_QUIT,他之前创建的界面不会假死? while while(GetMessage(&msg,NULL,0,0)) 这里就是消息循环,CreateWindow 所在函数是阻塞了,但是创建出来的窗口是新的UI线程,它怎么会卡假设呢。如果没有这个消息循环,新创建出来的窗口才不会显示! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 -------------- 那里新的UI线程? 很明显的while循环和 createwindows创建出来的窗体都是在winmain函数里面,同一个线程而已。 ----- 知道消息驱动的,关键是 上面那段代码 明显是个死循环。while只要不接受wm_quit 就一直循环,在没有消息的时候getmessage 阻塞。 所以无论怎么看,createwindows 都应该假死的,但是为何没有假死呢? -------------- 那里新的UI线程? 很明显的while循环和 createwindows创建出来的窗体都是在winmain函数里面,同一个线程而已。CreateWindow 里面会创建UI线程,你可以简单的用任务管理器查看,调用 CreateWindow 是否多了一个线程! -------------- 那里新的UI线程? 很明显的while循环和 createwindows创建出来的窗体都是在winmain函数里面,同一个线程而已。CreateWindow 里面会创建UI线程,你可以简单的用任务管理器查看,调用 CreateWindow 是否多了一个线程!----------------------------看了,没看到你说的那种情况如果真是滴,那就更有问题了。getmessage取到的只是本线程的消息,creatwindows另开了一个线程,那岂不是getmessage不能取到他的消息?那个循环就毫无作用了。 因为DispatchMessage是让窗口的WindowProc去处理消息的,所以窗体界面没假死,而是能显示出来。 -------------- 那里新的UI线程? 很明显的while循环和 createwindows创建出来的窗体都是在winmain函数里面,同一个线程而已。CreateWindow 里面会创建UI线程,你可以简单的用任务管理器查看,调用 CreateWindow 是否多了一个线程!没有新的UI线程,只有一个线程。 消息循环是一个死循环是真的。你主要的问题是没有弄明白windows处理消息的的过程。GetMessage之后,DispatchMessage会将消息传给操作系统,而操作系统会调用窗口过程函数对消息进行处理,当然如果粗一点看,我们也可以理解为DispatchMessage调用窗口处理函数。也就是说,虽然消息循环是个死循环,但是,在循过程中,DispatchMessage会调用窗口处理函数来对窗口进行响应,所以窗口会不假死。你每操作一下界面,就会相应的产生一个消息,而在循环中就会对这个消息调用一次窗口处理函数。这个过程就是上面有人说的,消息驱动。 求解:多线程socket报错 网络发包为什么一定要携带物理地址? 怎么在内存里画点锕 动态创建的CListCtrl树形目录列表控件怎样使其两个子项之间的间距增大?? CListCtrl能够与图形显示联系在一起吗? 如何将一个WCHAR的类型转换成CHAR 个位老大,各位前辈,小弟向你们取经来了。希望你们不吝赐教!!! 简单的问题 VC++6.0使用串口控件内存泄露 COM本质论和COM技术内幕这两本书那一本好? 一个有关QSORT在MFC应用的问题!急 VS2008 项目迁移 ,在线急等。
那里新的UI线程? 很明显的while循环和 createwindows创建出来的窗体都是在winmain函数里面,同一个线程而已。
那里新的UI线程? 很明显的while循环和 createwindows创建出来的窗体都是在winmain函数里面,同一个线程而已。CreateWindow 里面会创建UI线程,你可以简单的用任务管理器查看,调用 CreateWindow 是否多了一个线程!
那里新的UI线程? 很明显的while循环和 createwindows创建出来的窗体都是在winmain函数里面,同一个线程而已。CreateWindow 里面会创建UI线程,你可以简单的用任务管理器查看,调用 CreateWindow 是否多了一个线程!----------------------------看了,没看到你说的那种情况如果真是滴,那就更有问题了。getmessage取到的只是本线程的消息,creatwindows另开了一个线程,那岂不是getmessage不能取到他的消息?那个循环就毫无作用了。
那里新的UI线程? 很明显的while循环和 createwindows创建出来的窗体都是在winmain函数里面,同一个线程而已。CreateWindow 里面会创建UI线程,你可以简单的用任务管理器查看,调用 CreateWindow 是否多了一个线程!
没有新的UI线程,只有一个线程。
GetMessage之后,DispatchMessage会将消息传给操作系统,而操作系统会调用窗口过程函数对消息进行处理,当然如果粗一点看,我们也可以理解为DispatchMessage调用窗口处理函数。也就是说,虽然消息循环是个死循环,但是,在循过程中,DispatchMessage会调用窗口处理函数来对窗口进行响应,所以窗口会不假死。你每操作一下界面,就会相应的产生一个消息,而在循环中就会对这个消息调用一次窗口处理函数。这个过程就是上面有人说的,消息驱动。