// 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);
}
答案 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
替换为您调用的真正父类。