熱鍵(或稱組合鍵),在一個軟件中有時候是很必須的。我們可以通過自定義熱鍵和響應的方式,隱藏一些不向用戶開放的功能,以達到一些簡單的控制和目的。
自定義一個熱鍵,一般需要經過如下的基本步驟:
⑴?為熱鍵賦予一個ID;
⑵?向系統注冊該熱鍵;
⑶?定義消息響應函數;
⑷?解除注冊,釋放資源。
下面結合實例來詳細說明(**完整程序請到我的CSDN資源中下載:[http://download.csdn.net/detail/margin1988/3523748](http://download.csdn.net/detail/margin1988/3523748)**):
⑴?在Point1Dlg.h文件中聲明自定義熱鍵的ID變量及消息響應函數:
~~~
//自定義熱鍵
int m_nHotKeyID;//熱鍵ID
afx_msg LONG OnHotKey(WPARAM wParam,LPARAM lParam);//自定義熱鍵響應函數
~~~
⑵?在Point1Dlg.cpp中完成上述四個基本步驟:
①?在BEGIN_MESSAGE_MAP(CPoint1Dlg,CDialog)
~~~
ON_MESSAGE(WM_HOTKEY,&CPoint1Dlg::OnHotKey)//熱鍵響應消息映射宏
~~~
END_MESSAGE_MAP()之間,添加熱鍵響應消息映射宏。
②?在OnInitDialog()函數中注冊熱鍵:
~~~
//向系統注冊熱鍵:ALT+0
m_nHotKeyID=0;//為熱鍵賦予ID號
BOOL m_isKeyRegistered =RegisterHotKey(GetSafeHwnd(),m_nHotKeyID,MOD_ALT,VK_NUMPAD0);//向系統注冊該熱鍵
ASSERT(m_isKeyRegistered!= FALSE);
~~~
③?添加熱鍵消息響應函數:
~~~
LONG CPoint1Dlg::OnHotKey(WPARAM wParam,LPARAM lParam){
MessageBox(_T("您按下了ALT+0"));
return 0;
}
~~~
④?在某函數中(自己選擇或定義)解除注冊、釋放資源:
~~~
//解除注冊,釋放系統資源
BOOL m_iskeyUnregistered = UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID);
if(m_iskeyUnregistered)
MessageBox(_T("解除注冊、釋放資源成功!"));
else
MessageBox(_T("解除注冊、釋放資源失敗!"));
~~~

效果圖
- 前言
- VC++中自定義熱鍵及響應
- CFileDialog文件對話框
- VC++中客戶區保存為BMP圖片
- VC++讀、寫注冊表
- VC++播放音頻文件和音頻數據的方法
- VC++調用Matlab編寫的DLL(混合編程)
- VC++中文件讀、寫和其他相關操作匯總
- VC++獲取系統當前時間
- VC++按鈕控件字體設置
- VC++軟件界面風格簡單美化
- VC++中一些常用的數據類型之間的相互轉化
- VC++中截取字符串的方法
- VC++中vector矢量的使用方法及隨機相關
- VC++中結構體的定義及使用
- VC++中List Control控件的使用方法介紹
- VC++中窗口過程函數及其消息發送、響應機制介紹
- VC++中Ribbon編程架構及SDI架構多視圖切換介紹
- 串口通信基礎知識及VC++實現
- VC++中單個鍵盤按鍵的響應
- VC++中的計時器及多媒體高精度計時器
- VC++編寫DLL導出函數及其調用方法
- VC++對話框(CDialog)的全屏顯示及控件居中顯示
- VC++對話框(CDialog)添加背景圖片
- VC++圖片控件(Picture Control)顯示資源位圖(BMP)、文件位圖(BMP)、其它格式文件圖片(JPG\PNG\BMP)的方法
- VC++對Access數據庫的操作(查詢、插入、更新、刪除等)