mfc快捷键设置 | vc++6.0热键设置

1.为类添加消息ID   

在需要要添加热键的类的头文件(.h)开始处添加如下代码:

#define WM_MYHOTKEY WM_USER+1000     

//在这里我们需要知道为了防止用户定义的消息ID与系统的消息ID冲突,MS(Microsoft)定义了一个宏WM_USER,小于WM_USER的ID被系统使用,大于WM_USER的ID被用户使用。

2.为类手动添加WM_HOTKEY消息映射

在需要要添加热键的类的头文件(.h)的DECLARE_MESSAGE_MAP()前添加:

afx_msg LONG OnHotKey(WPARAM wParam,LPARAM lParam);

在需要要添加热键的类的源文件(.cpp)的BEGIN_MESSAGE_MAP(CHotKeyDlg,CDialog)宏和END_MESSAGE_MAP()宏之间添加:

ON_MESSAGE(WM_HOTKEY,OnHotKey)

3.在类的初始化函数中调用RegisterHotKey()函数,注册快捷键

打开类向导,为我们的类添加一个初始化函数,并在函数中添加注册快捷键的代码

BOOL hotkey::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	if(RegisterHotKey(GetSafeHwnd(),WM_MYHOTKEY,NULL,VK_F2))
		MessageBox("快捷键注册成功");
	else
		MessageBox("快捷键注册失败");
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

这里的RegisterHotKey(GetSafeHwnd(),WM_MYHOTKEY,NULL,VK_F2)函数中GetSafeHwnd()函数是用来返回窗口的句柄,WM_MYHOTKEY为快捷键的ID,NULL表示快捷键无辅助按键,VK_F2是快捷键的键值。

4.在响应按下快捷键的函数OnHotKey()中添加按下快捷键的处理程序

long  hotkey::OnHotKey(WPARAM wp,LPARAM lp)
{
	if(wp==WM_MYHOTKEY)
		MessageBox("快捷键F2");
	return 0;
}

5.注销已注册的快捷键,释放系统资源

打开类向导,给我们的对话框类添加一个Destroy()函数,并在函数中添加注销热键的代码

void hotkey::OnDestroy() 
{
	CDialog::OnDestroy();
	
	// TODO: Add your message handler code here
	UnregisterHotKey(GetSafeHwnd(),WM_MYHOTKEY);//注销热键
}

6.最后我们看一下,当我们按下F2后,就会弹出一个快捷键F2的对话框

猜你喜欢

转载自blog.csdn.net/qq_25036849/article/details/108853607
今日推荐