在 Visual C++ 对话框中,可以使用
WM_KEYDOWN
消息函数来移动屏幕上所画的直线。以下是一段代码示例:
void CMouseDrDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此处添加消息处理程序代码,或者调用默认开关
switch (nChar)
{
case VK_LEFT:
nPoint[1].x--;
SendMessage(WM_PAINT);
break;
case VK_RIGHT:
nPoint[1].x++;
SendMessage(WM_PAINT);
break;
}
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
按左箭头和右箭头键后没有反应。为了解决此问题,可以添加一个
PreTranslateMessage()
函数:
BOOL CMouseDrDlg::PreTranslateMessage(MSG pMsg)
{
// TODO: 在此处添加特殊代码,或调用基类
if (pMsg->message == WM_KEYDOWN)
{
PostMessage(WM_KEYDOWN);
}
return CDialog::PreTranslateMessage(pMsg);
}
即使添加了
PreTranslateMessage()
函数,仍然没有反应。这可能是由于以下原因:
nPoint
变量未正确初始化。
发送消息的时机不正确。
消息处理程序代码存在错误。
请仔细检查代码并确保没有语法错误或逻辑错误。请确保
nPoint
变量在对话框创建后立即正确初始化。
如果问题仍然存在,可以尝试使用调试器来一步步执行代码并检查变量的值。通过这种方式,可以识别并修复代码中的任何问题。
本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!
添加新评论