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

計(jì)算機(jī)二級(jí)考試C++輔導(dǎo):CDialog中不響應(yīng)OnKeyDown和一些相關(guān)問(wèn)題

時(shí)間:2008-10-05 02:43:00   來(lái)源:無(wú)憂考網(wǎng)     [字體: ]
經(jīng)常有人提出CDialog中響應(yīng)鍵盤(pán)消息的OnKeyDown函數(shù)沒(méi)反應(yīng)。結(jié)論是CDialog不響應(yīng)OnKeyDown,相應(yīng)的解決方法是:
  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)過(guò)仔細(xì)研究發(fā)現(xiàn)CDialog是相應(yīng)對(duì)應(yīng)消息的OnKeyDown函數(shù)的,只是這個(gè)消息在到達(dá)窗體之前,已經(jīng)被它的子控件捕獲了,如果將窗體中的所有控件都刪除,窗體就會(huì)捕獲到這個(gè)消息,但要注意的是,MFC為了實(shí)現(xiàn)在窗體上切換子控件的焦點(diǎn),已經(jīng)將 VK_TAB,VK_LEFT,VK_RIGHT,VK_UP,VK_DOWN進(jìn)行了處理,同時(shí)VK_RETURN也被系統(tǒng)捕獲用來(lái)處理相應(yīng)的確定事件,所以即使窗體中沒(méi)控件,這幾個(gè)鍵還是無(wú)法捕獲,暫時(shí)只能用PreTranslateMessage解決。
  一個(gè)窗體僅在它沒(méi)有可視和有效的控件時(shí)。響應(yīng)OnKeyDown。