一个基于对话框的程序,我把它的原来的捕捉到回车键和取消键(Cancel)就退出程序的的基本功能屏蔽掉,屏蔽掉了以后,我发现一启动程序,CPU的利用率达到了
98% !怎么回事?我的屏蔽回车键和取消键的代码如下:BOOL CMyDlg::PreTranslateMessage(MSG* pMsg) 
{
  // TODO: Add your specialized code here and/or call the base class
 if(pMsg->message = WM_KEYDOWN)
  {
if(pMsg->wParam == VK_RETURN ) return TRUE;
if(pMsg->wParam == VK_ESCAPE) return TRUE;
  }
 return CDialog::PreTranslateMessage(pMsg);
}我的这个对话框有最大化,最小化,恢复,关闭等系统按钮。

解决方案 »

  1.   

    不明白为什么非要用消息屏蔽
    给ok和cancel添加消失,然后注释掉CDialog::OnOK()和CDialog::OnCancel
    将ok和cancel按钮设置为隐藏,这样不用载获消息了
      

  2.   

    if(pMsg->message = WM_KEYDOWN)//错了,应该是if(pMsg->message == WM_KEYDOWN),我的机器上改了就没点CPU了.
      {
    if(pMsg->wParam == VK_RETURN ) return TRUE;
    if(pMsg->wParam == VK_ESCAPE) return TRUE;
      }
      

  3.   

    可形成将常量写在左边的编程习惯来防此类错误:
    if( WM_KEYDOWN == pMsg->message )//如错写成if(WM_KEYDOWN = pMsg->message)会有编译错的.
      

  4.   

    QunKangLi(雾痕)
    =========================
    问题就出在=号上。
    汗啊~~~这么简单的问题,但是又是这么容易出错,汗!