首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC中发出消息与程序执行的顺序解决方案

2012-05-15 
MFC中发出消息与程序执行的顺序如果一个函数发出一个消息,那是等待消息响应函数执行完后再继续函数剩余部

MFC中发出消息与程序执行的顺序
如果一个函数发出一个消息,那是等待消息响应函数执行完后再继续函数剩余部分 
还是多线程同时进行的例如
void CMyview::kk()
{
....
Invalidate(true);//触发WM_PAINT消息
(2)
....
}
例如这个例子下
是现执行完OnPaint函数 再回到(2)继续执行  
还是OnPaint函数与KK函数同时并行进行的

[解决办法]
Invalidate在消息队列中加入一条WM_PAINT消息,而UpdateWindow直接发送一个WM_PAINT消息,
所以函数走完,才执行Onpaint
假如updatewindow就不一样了
还有一条,假如kk()也在消息函数里执行,那updatewindow会不会即时刷新呢?
我也有些搞不懂。。
我有个小例子,类似,最后开了线程
 
 UINT API_Check_Exit(LPVOID lParam)
{
CToolForCheckDlg* pDlg = (CToolForCheckDlg*)lParam;
WaitForSingleObject(pDlg->m_hThread_Check, INFINITE);
pDlg->m_hThread_Check = NULL;
pDlg->myCancel(); 
return 0;
}

void CToolForCheckDlg::myCancel() 
{
CDialog::OnCancel();
}

void CToolForCheckDlg::OnCancel() 
{
m_hook.stophook();
m_bExit=true;
AfxBeginThread(API_Check_Exit, (LPVOID)this);
}


热点排行