VC编程中OnKeyDown 的用法详解 (vc编程怎么使用)

在 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网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论