我的示例工程如下:
窗体上放两个按钮和一个标签:cmdStart , cmdStop 和 lblNumber。按下 cmdStart 后开始计数直至全局变量 m_bIsRunning = false 或超过一定次数,通过按另一个按钮来改变全局变量。在网上搜到用PeekMessage的方法,但是还是不太会用,请问谁能给我点提示?我知道在VB里只需要 DoEvents 就可以了。我又复习了一遍SDK编写一个最简单的窗口程序的过程(在回调函数里处理消息,注册窗口类,其中窗口结构的一项是回调函数的地址,创建窗口,消息循环),还是没想到方法。
void CVCDoEventsDlg::OncmdStart()
{
CString sCount;
static MSG msg;
m_Count = 0;
m_bIsRunning = true;
/*
while (PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
if (!AfxGetApp()->PumpMessage())
{
PostQuitMessage(0);
}
}
*/
while(m_bIsRunning && m_Count <= 1000)
{
m_Count++;
PeekMessage(&msg,NULL,0,0,PM_NOREMOVE); // 运行结果表明,这一句并不等价于VB的DoEvents
sCount.Format(_T(“%d”), m_Count);
m_lblNumber.SetWindowText(sCount);
m_lblNumber.UpdateWindow();
}
}
void CVCDoEventsDlg::OncmdStop()
{
m_bIsRunning = false;
}
>> 本文固定链接: http://www.vcgood.com/archives/2590