WM_HOTKEY not catching
WM_HOTKEY not catching
我正试图为我的MFC应用程序分配一个热键。我想让它工作,即使我的应用程序不在焦点
我正在使用Visual Studio 2013。
我的对话框继承了CWnd
类,如下:
class CMyClass : public CWnd
在课堂上,我定义了这个:
protected:
//...
afx_msg void OnHotKey(UINT id, UINT key1, UINT key2);
编辑:我也试着把override
关键字放在那里,但后来它告诉我,它不继承基类成员。
在我的实现中:
void CMyClass::OnHotKey(UINT id, UINT key1, UINT key2)
{
if (id == 1 || id == 2)
{
// do something
}
}
在构造函数中:
if (!RegisterHotKey(NULL /* also tried m_hWnd */, 1, MOD_ALT | MOD_SHIFT, 0x56 /* 'V' */))
{
// do some failure code, but it passes
}
if (!RegisterHotKey(NULL /* also tried m_hWnd */, 2, MOD_ALT | MOD_SHIFT, 0x76 /* 'v' */))
{
// do some failure code.. but it passes
}
在我的析构函数中:
// Unregister hotkeys
UnregisterHotKey(NULL /* also tried m_hWnd */, 1);
UnregisterHotKey(NULL /* also tried m_hWnd */, 2);
在我的BEGIN_MESSAGE_MAP
中:
ON_WM_HOTKEY()
现在我调试了它,即使我按SHIFT+ALT+'v',它也没有进入OnHotKey
函数。
有什么想法可能是问题吗?
问题是,当窗口句柄尚未初始化时,您正在构造函数中注册热键。
你应该像这样在OnCreate()
中初始化你的热键:
::RegisterHotKey(GetSafeHwnd(), 1, MOD_ALT | MOD_SHIFT, 'V');
::RegisterHotKey(GetSafeHwnd(), 2, MOD_ALT | MOD_SHIFT, 'v');
注销部分应在OnDestroy()
中完成:
::UnregisterHotKey(GetSafeHwnd(), 1);
::UnregisterHotKey(GetSafeHwnd(), 2);
相关文章:
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- OpenCV Android C++ imwrite not found
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 使用单词"not"作为C ++类的名称会导致VS2019错误
- 错误"Could not find Boost"(缺少:上下文标头)
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- Is !NaN not a NaN?
- 为什么我会" void value not ignored as it ought to be"?
- 解决"ld: library not found for -ltensorflow_framework.2.3.0"
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- Directx 11 - CompileFromFile() is not compiling
- 方法错误"not all control paths return a value"和方法不返回值
- Centos7 g++ "to_string is not in a member of std"
- 将系数存储在头文件的数组中("does not name a type"错误)
- QGraphicsItems not showing up QGraphicsScene
- 在调试模式下引发C++ "deque iterator not dereferencable"异常
- InitializeCriticalSectionEx Not Located In KERNEL32.Dll
- WM_HOTKEY not catching