不堵塞的等待函数
void CUtil::Wait(int nDelay, UINT nMsgFilter) { DWORD nStartTime = GetTickCount(); while (true) { DWORD nEndTime = GetTickCount(); if (nEndTime - nStartTime > (DWORD) nDelay) break; continue; PumpMessages(NULL, nMsgFilter); } } void CUtil::PumpMessages(HWND hWnd, UINT nMsgFilter) { MSG msg; // Handle dialog messages while(::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { //需要过滤的消息 if(nMsgFilter && nMsgFilter == msg.message) { continue; } if(!::IsDialogMessage(hWnd, &msg)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } } }
注:转载文章需注明来源:VCer.net 文章地址:http://vcer.net/1047279252296.html
如果你觉得VCer.net不错,而且你愿意为VCer.net捐赠一元钱,那么点击后面的捐赠按钮吧:)
我得意,我用他的代码;
我自豪,他用我的代码!
void main() { printf("hello, vcer!"); }
A B C D E
没看明白里面用到的原理?
carlward 于 2008-10-10 00:46:23.0 编辑 [回复该贴]