在MFC對話框程序中使用加速鍵

新建一個基於對話框的工程,添加一個按鈕,修改按鈕ID,這裏爲ID_BTN_OPENFILE,爲按鈕添加消息響應事件,這裏我打開文件保存對話框:

void CAccelDlg::OnBtnOpenfile() 
{
	// TODO: Add your control notification handler code here
	CFileDialog dlg (TRUE);
	dlg.DoModal ();	
}
爲工程添加一個加速鍵資源,添加一條,注意ID要和按鈕的ID相同,只有這樣才能產生關聯

爲主對話框類添加一個加速鍵變量成員:

HACCEL m_hAccel;
在對話框的OnInitDialog初始化函數中加載加速鍵資源

  // 加載加速鍵資源
  m_hAccel = LoadAccelerators (AfxGetInstanceHandle (), MAKEINTRESOURCE(IDR_ACCELERATOR1)); 

然而對話框要處理加速鍵需要處理按鍵消息,翻譯加速鍵,添加虛函數:PreTranslageMessage,在函數裏添加對加速鍵的翻譯函數

TranslateAccelerator (m_hWnd, m_hAccel, pMsg);

Ok, 到這裏就可按 Ctrl+o 鍵達到和點擊“打開”按鈕一樣的效果:


發佈了93 篇原創文章 · 獲贊 67 · 訪問量 100萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章