国产18禁黄网站免费观看,99爱在线精品免费观看,粉嫩metart人体欣赏,99久久99精品久久久久久,6080亚洲人久久精品

計算機二級考試C++輔導:CDialog中不響應OnKeyDown和一些相關問題

時間:2008-10-05 02:43:00   來源:無憂考網(wǎng)     [字體: ]
經(jīng)常有人提出CDialog中響應鍵盤消息的OnKeyDown函數(shù)沒反應。結(jié)論是CDialog不響應OnKeyDown,相應的解決方法是:
  BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
  {
  // TODO: Add your specialized code here and/or call the base class
  if(pMsg->message == WM_KEYDOWN)
  {
  switch (pMsg->wParam)
  {
  case VK_LEFT:
  break;
  case VK_RIGHT:
  break;
  case VK_UP:
  break;
  case VK_DOWN:
  break;
  }
  }
  return CDialog::PreTranslateMessage(pMsg);
  }
  經(jīng)過仔細研究發(fā)現(xiàn)CDialog是相應對應消息的OnKeyDown函數(shù)的,只是這個消息在到達窗體之前,已經(jīng)被它的子控件捕獲了,如果將窗體中的所有控件都刪除,窗體就會捕獲到這個消息,但要注意的是,MFC為了實現(xiàn)在窗體上切換子控件的焦點,已經(jīng)將 VK_TAB,VK_LEFT,VK_RIGHT,VK_UP,VK_DOWN進行了處理,同時VK_RETURN也被系統(tǒng)捕獲用來處理相應的確定事件,所以即使窗體中沒控件,這幾個鍵還是無法捕獲,暫時只能用PreTranslateMessage解決。
  一個窗體僅在它沒有可視和有效的控件時。響應OnKeyDown。