窗口接收热键的方法

Posted on 2007-01-12 15:38 梁海泉 阅读(347) 评论(0)  编辑 收藏 引用

/****************************************************************/

接收热键消息函数

在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间插入下面的宏

ON_MESSAGE(WM_HOTKEY,&CmyDlg::OnHotKey)

其中OnHotKey是要接收热键的对话框的成员函数。原型如下:

afx_msg HRESULT OnHotKey(WPARAM wp,LPARAM lp);

其中WPARAM是注册热键的时候的HotKeyID

/****************************************************************/

注册热键函数

RegisterHotKey(m_hWnd,HotKeyID,m,k);

参数1:要接收热键消息的窗口
参数2:热键号码,自己定义的一个整数,区分一个窗口中的多个热键
参数3:系统键
参数4:虚拟键


/****************************************************************/

从热键控件中得到热键

#define KEY(m,fm) if (m & HOTKEYF_ALT)     \
 fm |= MOD_ALT;                          \
 if (m & HOTKEYF_CONTROL)                    \
 fm |= MOD_CONTROL;                         \
 if (m & HOTKEYF_SHIFT)                     \
 fm |= MOD_SHIFT;                         \
 
CHotKeyCtrl m_HotKey;
m_HotKey.GetHotKey(k,m);
KEY(m,fm)
RegisterHotKey(m_hWnd,HotKeyID,m,k);


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理