您的位置:首页 > 其它

vc 修改MFC 消息循环的两种方法

2010-08-23 10:15 316 查看
1.使用多线程应该是最好的方法了!
类封装线程的一种技巧

CMainFrame::CMainFrame()
{
CreateThread(NULL, 0, ThreadFunc, this, 0, NULL);
}

static DWORD WINAPI CMainFrame::ThreadFunc(LPVOID lparam)
{
return ((CMainFrame*)lparam)-> ThreadRun();
}

CMainFrame::ThreadRun(void)
{
// 在线程里做想做的事
return 0;
}

2.重载消息循环.例子如下:
void CDoeventsDlg::DoEvents()
{
MSG msg;
if (::PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { //从Windows消息队列中取出消息
if (msg.message== WM_QUIT)//如果消息为退出,发送退出消息
{
::PostQuitMessage(-1);
}
if(!AfxGetApp()-> PreTranslateMessage(&msg))//如果无法预处理消息
{
::TranslateMessage(&msg);//转换消息
::DispatchMessage(&msg);//发送消息
}
}
AfxGetApp()-> OnIdle(0);AfxGetApp()-> OnIdle(1);//消息队列为空时闲置一段时间
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: