可怜,今天接触C++第四天,就要面临这种有关问题
可怜,今天接触C++第四天,就要面临这种问题。本帖最后由 woyaodubo 于 2014-01-10 18:09:19 编辑在while没有
可怜,今天接触C++第四天,就要面临这种问题。
本帖最后由 woyaodubo 于 2014-01-10 18:09:19 编辑 在while没有结束之前,窗体似乎不能接受任何消息,就死在那里。
上网找了下,说要用到线程。这不是折磨我吗。
void CllkDlg::OnAutoA()
{
int i=ClientNum();
int time=this->m_ms;
UpdateData(true);
while (i!=0)
{
Sleep(time);
Done();
i-=1;
}
}
[解决办法]PeekMessage()
[解决办法]这个函数是main调用的?
如果是main调用的,那么这个函数不结束,那么main这个主线程就会一直在处理这个函数,
而窗体处理消息的逻辑也是在main里面调用的,所以main就来不及调用窗体处理消息的逻辑了。
[解决办法]void DoEvents()
{
MSG msg;
BOOL result;
while ( ::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE ) )
{
result = ::GetMessage(&msg, NULL, 0, 0);
if (result == 0) // WM_QUIT
{
::PostQuitMessage(msg.wParam);
break;
}
else if (result == -1)
{
// Handle errors/exit application, etc.
}
else
{
::TranslateMessage(&msg);
:: DispatchMessage(&msg);
}
}
}
void CllkDlg::OnAutoA()
{
int i=ClientNum();
int time=this->m_ms;
UpdateData(true);
while (i!=0)
{
Sleep(time);
DoEvents();
Done();
i-=1;
}
}