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);
}