HWND hWnd , //指定接收WM_HOTKEY消息的窗体句柄
int id, //热键标识,同一调用线碰败程内的不同热键标识不能相同,应用程序中的标识值在0x0000和0xbfff之间,DLL中的在0xc000和0xffff之间
UINT fsModifiers,//下列值的组合:MOD_ALT,MOD_CONTROL,MOD_SHIFT,MOD_WIN,MOD_KEYUP
UINT vk //按键的虚拟码
)
//在初始化的时候注册:
RegisterHotKey(m_hWnd,1688,MOD_SHIFT|MOD_CONTROL,'A')
RegisterHotKey(m_hWnd,2688,MOD_SHIFT|MOD_CONTROL,'a')
//表示按下Shift+Ctrl+A和Shift+Ctrl+a
BOOL UnregisterHotKey(HWND hWnd, int id)
//添加WM_DESTROY消息时注销热键
{
CDialog::OnDestroy()
// TODO: Add your message handler code here
UnregisterHotKey(m_hWnd,1688)
UnregisterHotKey(m_hWnd,2688)
}
//添加消纯斗息函笑裤颤数
afx_msg LRESULT OnHotHey(WPARAM wParam,LPARAM lParam)
//实现
CWndsnapDlg::OnHotKey(WPARAM wParam,LPARAM lParam)
{
if(wParam==1688||wParam=2688)
{
CDialog a
a.DoModal()
}
if()
{
CDialog b
b.DoModal()
}
//...
}
先新建一个windos窗口程序,在窗口程序中画:
一个按钮、一态侍个标签、其中时钟可以不画,为了提现出按下热键后的效果,这里画一个
先写一个时钟周期事件,目的是让按下最小化按钮后窗口被隐藏。
双击时钟,在生成的子程序"_时钟1_周期事件"下面编写代码如下:
如果 (_启动窗口.位置 = 2)_启动窗口.可视 = 假
设置时钟周期为1000。
PS:启动窗口位置=2的意思是启动窗口被最小化。如果被最小话
然后启动窗口不可视。如图!
让按下按银知钮后实现热键注册(当然你自己可以根据自己的需求来设定热键如何注册)
点击按钮后生成一个为“_按钮1_被单击”的子程序,创建一个整数型的全局变量“热键”,然后在这个子程帆搏吵序下编写代码如下:
热键 = 注册热键 (取窗口句柄 (), 标签1.取窗口句柄 (), 0, #F1键)如果 (热键 = 0)信息框 (“抱歉!热键注册失败”, 0, )否则信息框 (“热键注册成功”, 0, )
PS:注册热键()这个程序需要标签窗口的句柄和标签所在窗口的句柄,我设定按F1键后启动窗口被显示出来。并提示成功或失败!返回值是整数,失败返回0。
回到“_启动窗口”,点中标签,加入一个“反馈事件”的子程序,如图所示,子程序会自带两个参数,不要去改动它们。
在标签反馈事件后生成的“_标签1_反馈事件”子程序下面,写入一下代码:
如果 (参数一 = 热键) _启动窗口.可视 = 真 _启动窗口.位置 = 1PS:判断按下的热键和注册的热键是否相等, 相等时,_启动窗口.位置 = 1表示窗口被居中。
最后调试一下:
一、点击按钮先注册热键为F1,提示成功,再点击最小化隐藏窗口。
二、按一下F1后,热键值和参数值 因为想等,窗口重新显示。成功!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)