MFC:为什么加速器不起作用
MFC: Why is the Accelerator not working?
我试图在继承CFrameWnd
的类中使用一个加速器,该类本身在从CWinApp
继承的类中使用。由于某种原因,我在加速器中定义的快捷方式只是不想工作。
有两个类: CMyFrame
( CFrameWnd
继承(和 CMyApp
(从 CWinApp
继承(。
相关功能:
BOOL CMyApp::InitInstance() {
m_hAccel = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR1));
CMyFrame *Frame = new CMyFrame();
m_pMainWnd = Frame;
Frame->ShowWindow(SW_NORMAL);
Frame->UpdateWindow();
return TRUE;
}
BOOL CMyApp::ProcessMessageFilter(int code, LPMSG Msg) {
if (m_hAccel) {
if (::TranslateAccelerator(m_pMainWnd->m_hWnd, m_hAccel, Msg)) {
return TRUE;
}
}
return CWinApp::ProcessMessageFilter(code, Msg);
}
BEGIN_MESSAGE_MAP(CMyFrame, CFrameWnd)
ON_COMMAND(ID_FILE_NEW, &CMyFrame::OnFileNew)
ON_COMMAND(ID_FILE_SAVE, &CMyFrame::OnFileSave)
ON_COMMAND(ID_EDIT_CUT, &CMyFrame::OnEditCut)
ON_COMMAND(ID_EDIT_COPY, &CMyFrame::OnEditCopy)
ON_COMMAND(ID_EDIT_PASTE, &CMyFrame::OnEditPaste)
END_MESSAGE_MAP()
void CMyFrame::OnFileNew() {
MessageBox(L"OnFileNew", L"Event", MB_OK);
}
void CMyFrame::OnFileSave() {
MessageBox(L"OnFileSave", L"Event", MB_OK);
}
void CMyFrame::OnEditCut() {
MessageBox(L"OnEditCut", L"Event", MB_OK);
}
void CMyFrame::OnEditCopy() {
MessageBox(L"OnEditCopy", L"Event", MB_OK);
}
void CMyFrame::OnEditPaste() {
MessageBox(L"OnEditPaste", L"Event", MB_OK);
}
我包括afxwin.h
和resource.h
。加速器本身已正确加载(我使用另一个MessageBox检查了返回值。始终是1,MSDN指出,除0以外的每个值都意味着成功(。另外,当我不加载加速器时,菜单项将被弄清楚。项目本身也可以正常工作。当我单击它们时,相应的消息框会弹出。CMyFrame
的标题包含DECLARE_MESSAGE_MAP()
。
CFrameWnd
具有自己的CFrameWnd::LoadAccelTable
方法。添加此行:
Frame->LoadAccelTable(MAKEINTRESOURCE(IDR_ACCELERATOR1));
CWinThread::ProcessMessageFilter
如果MFC对话框有效,将处理加速器消息。但是,它在您的代码中设置的方式将将加速器传递到主帧而不是对话框。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 为什么简单的算术减法在"if"条件下不起作用?
- 为什么Stroustup书中的has_f不起作用
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 嵌套While循环不起作用(C++问题)
- C++Matching Brackets 2解决方案不起作用
- MFC:为什么加速器不起作用
- WinAPI - 菜单加速器不起作用