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

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);//消息队列为空时闲置一段时间
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值