我在MFC中得到Unhandled异常,在使用此代码时,请帮帮我?

时间:2013-04-24 14:48:24

标签: c++ mfc

// 23-3apr.exe中0x00413c39处的未处理异常:0xC00000FD:堆栈溢出。

BOOL CDialog::PreTranslateMessage(MSG* pMsg)
{

  if (pMsg->message == WM_KEYDOWN)
  {
    if(pMsg->wParam == VK_SPACE && pMsg->wParam == VK_SHIFT)
    {
      AfxMessageBox("Key is pressed");
    }

   return CDialog::PreTranslateMessage(pMsg);
} 

1 个答案:

答案 0 :(得分:1)

CDialog :: PreTranslateMessage函数调用自身始终。这是一个无限循环,通常会溢出堆栈。

通常你会在这种情况下调用父类,所以

BOOL CDialog::PreTranslateMessage(MSG* pMsg)
{

  if (pMsg->message == WM_KEYDOWN)
  {
    if(pMsg->wParam == VK_SPACE && pMsg->wParam == VK_SHIFT)
    {
      AfxMessageBox("Key is pressed");
    }

   return CDialogParent::PreTranslateMessage(pMsg);
}

显然将CDialogParent替换为您调用的真正父类。