在VC中为程序、窗口添加快捷键可以分为两种情况,一是添加全局的Windows快捷键,二是为指定窗口或控件添加快捷键。如下:
一、添加全局的Windows快捷键。
主要用到的API是:RegisterHotKey,具体详见MSDN。
二、为指定窗口或控件添加快捷键
通常,可以重载PreTranslateMessage函数来实现功能。
这里举个例子,在PreTranslateMessage函数中实现一些快捷键,在一个视频播放器中添加快捷键,如下:
BOOL CShowVideo::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
//捕获键盘按键的消息
if (pMsg->message == WM_KEYDOWN)
{
//捕获键盘Esc键的消息
if (pMsg->wParam == VK_ESCAPE)
{
//全屏时,就退出全屏
if (g_pMainWnd->m_bFullScreen)
{
FullScreenOrNot(false);
}
//不是全屏时,就退出程序
else
{
g_pMainWnd->OnClose();
}
return TRUE;
}
//按下Enter键时
if (pMsg->wParam == VK_RETURN)
{
if (::GetKeyState(VK_CONTROL) < 0) //同时按下Ctrl+Enter时
{
if (g_pMainWnd->m_bPlaying)
{
if (g_pMainWnd->m_bFullScreen)
{
FullScreenOrNot(false); //退出全屏
}
else
{
FullScreenOrNot(true); //全屏
}
}
}
return TRUE;
}
//按下空格键时
if (pMsg->wParam == VK_SPACE)
{
if (g_pMainWnd->m_bPlaying)
{
OnBnClickedBtnPlayOrPause(); //暂停或继续播放
}
return TRUE;
}
}
return CBCGPDialog::PreTranslateMessage(pMsg);
}