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

请问:GetMessage()和PeekMessage()所引起的不同结果

2012-02-14 
请教:GetMessage()和PeekMessage()所引起的不同结果下面的代码是对一个对话框上的OK按钮被按下时的响应:vo

请教:GetMessage()和PeekMessage()所引起的不同结果
下面的代码是对一个对话框上的OK按钮被按下时的响应:

void   CComputeDlg::OnBnClickedStart()
{
MSG   message;
m_nTimer   =   (int)SetTimer(1,   100,   NULL);

GetDlgItem(IDC_START)-> EnableWindow(FALSE);
volatile   int   nTemp;
for(m_nCount   =   0;   m_nCount   <   nMaxCount;   m_nCount++)
{
for(nTemp   =   0;   nTemp <10000;   nTemp++)
{
}
if(::PeekMessage(&message,   NULL,   0,   0,   PM_REMOVE))
{
::TranslateMessage(&message);
::DispatchMessage(&message);
}
}
GetDlgItem(IDC_START)-> EnableWindow(TRUE);
CDialog::OnOK();
}

这是《Visual   C++   .NET技术内幕》里的一个例程的片断(Page   226)。
依照书上的代码(如上面所示),则程序可以正常运转。但是,把PeekMessage()改为GetMessage()后则可以通过编译,但只要一响应该事件,程序就死在那儿了。

请高手指点,非常感谢。


[解决办法]
GetMessage在没有消息时会一直等待
PeekMessage在没有消息时会继续向前执行代码

热点排行