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);//消息队列为空时闲置一段时间
}
类封装线程的一种技巧
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);//消息队列为空时闲置一段时间
}
相关文章推荐
- VC++/MFC程序图标更改方法以及修改程序标题 超级简单啦
- VC MFC 修改目录时间方法
- 关于VC++中,两种自定义消息的发送与接收的方法实现进行说明
- MFC两种重载控件消息响应的方法
- 关于VC++中,两种自定义消息的发送与接收的方法实现进行说明。
- EVC/VC添加自定义消息的两种方法
- 关于VC++中,两种自定义消息的发送与接收的方法实现进行说明。
- 关于VC++中,两种自定义消息的发送与接收的方法实现进行说明
- VC++ (MFC)调用 C#生成DLL的两种方法
- 关于VC++中,两种自定义消息的发送与接收的方法实现进行说明。
- 两种方法查看MFC源代码
- VC MFC 视图中控件响应CTRL+C等消息
- 【VC+MFC】在工具栏上添加ComboBox控件的方法
- .深入探讨MFC消息循环和消息泵
- 在vs2008 vc++ 中添加mfc中消息处理函数
- MFC中使用PreTranslateMessage方法对消息进行筛选
- [VC & MFC] 动态创建View的几个方法
- vc mfc代码中获得程序资源中版本信息的方法
- 删除MFC单文档默认菜单栏的两种方法
- 关于MFC中修改控件字体和背景颜色的方法