如何為對話方塊上的自定義快捷鍵?

2022-09-02 07:18:10 字數 1469 閱讀 6948

方法一:

原文在:

1 插入乙個新的accelerator到資源裡,把加速鍵和對應的響應控制項(如乙個按鈕)關聯

2 在對話方塊標頭檔案中宣告:

haccel m_haccel;

3 在對話方塊的建構函式裡初始化m_haccel

m_haccel = ::loadaccelerators(afxgetinstancehandle(),makeintresource(idr_accelerator1));

4 然後過載對話方塊的pretranslatemessage函式,在

bool caboutdlg::pretranslatemessage(msg* pmsg) 

}return cdialog::pretranslatemessage(pmsg);

}方法二:

1   宣告熱鍵訊息處理函式原型    

在.h中訊息對映宣告處(afx_msg字樣之後)加入如下語句:    

lresult  onhotkey(wparam  wparam,lparam  lparam);    

2.  訊息與相應處理函式相關聯    

在.cpp中加入訊息對映巨集,使訊息與相應處理函式發生關係,  

on_message(wm_hotkey,onhotkey);    

3.  為方便以後的操作 

預先在類中建立乙個響應wm_create和wm_destroy訊息的函式  

oncreate()與ondestroy()的框架

4.向系統登記熱鍵    

在oncreate()函式中加入如下**以向系統登記熱鍵,本例子的熱鍵設為  

ctrl+shift+a.    

registerhotkey(m_hwnd,1001,mod_control|mod_shift,'a');    

registerhotkey(m_hwnd,1002,mod_control|mod_shift,'a');    

5.處理熱鍵    

在訊息處理函式onhotkey()中對熱鍵進行處理,並可加入使用者希望執行的程式**  

lresult c****::onhotkey(wparam  wparam,lparam  lparam)    

if(wparam==1001||wparam==1002)    

cwnd::setforegroundwindow();//使得被啟用視窗出現在前景    

messagebox("hello!");    

//使用者可在此新增**    

return  0;    

6.程式執行完畢後解除熱鍵    

在ondestroy()中通過unregisterhotkey()解除熱鍵登記,釋放系統資源.    

unregisterhotkey(m_hwnd,1001);    

unregisterhotkey(m_hwnd,1002);    

7.編譯並執行程式

對話方塊上自定義繪製文字

以下 放置在onpaint 的else中,刪除原來else中的內容 文字 int itheight 200 文字高度 int itwidth 200 文字寬度 int ix 640 繪製區域的開始位置x int iy 150 繪製區域的開始位置y int icx ix itwidth 繪製區域的寬度...

SQL Server 自定義快捷鍵。

快捷鍵 現在只要不是電腦新手,都知道ctrl c ctrl v,沒什麼人會用選單去進行複製 貼上。而對於靠電腦吃飯的程式設計師來說,只知道這兩個快捷鍵是不夠的。善用快捷鍵,可以節省用滑鼠去找圖示或選單的時間。更爐火純青的狀態是全鍵盤操作,連把手移動到滑鼠的時間都省了 unix程式設計師都是這麼幹的 ...

Cadence快捷鍵及自定義快捷鍵(env檔案)

首先說明一下環境變數檔案 evn檔案 環境變數檔案有兩個,它們分別在系統盤的根目錄下的 pcbevn 目錄中 比如系統在 c 盤,那麼 evn 檔案將在 c pcbevn 下 和程式安裝路徑下 如 cadence 設計系統程式安裝在 d cadence 下,則 evn 檔案將在d cadence p...