gpt4 book ai didi

c++ - WinAPI - 菜单加速器不工作

转载 作者:太空狗 更新时间:2023-10-29 23:07:27 24 4
gpt4 key购买 nike

我正在尝试向我的菜单添加快捷键,当我按下“Ctrl+R”时,它应该发送命令 ID_VIEW_RESULTS,但它没有。单击菜单项可以正常工作,但不能翻译加速器,这就是我所拥有的:

MyApp.h

#define WIN32_LEAN_AND_MEAN
#include <Windows.h>

#define ID_MAINMENU 101
#define ID_MENUACC 102

#define ID_VIEW_RESULTS 2001

MyApp.rc

#include "MyApp.h"

/////////////////////////////////////////////////////////////////////////////
//
// Menu
//

ID_MAINMENU MENU
BEGIN
POPUP "&View"
BEGIN
MENUITEM "Calculated &Results...\aCtrl+R", ID_VIEW_RESULTS
END
END

/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//

ID_MENUACC ACCELERATORS
BEGIN
"^R", ID_VIEW_RESULTS, ASCII, NOINVERT
END

MyApp.cpp

#include "MyApp.h"

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInst);
UNREFERENCED_PARAMETER(lpCmdLine);

// Create and show main window, CMainWnd definition is dialog
// resource template, works fine, irrelevant to problem.
MainWnd = new CMainWnd();
MainWnd->Show();

MSG Msg;
HACCEL hAcc;
hAcc = LoadAccelerators(hInst, MAKEINTRESOURCE(ID_MENUACC));

while (GetMessage(&Msg, 0, 0, 0)) {
if (!TranslateAccelerator(Msg.hwnd, hAcc, &Msg)) {
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
}

return (int)Msg.wParam;
}

我自己也看不出这行不通的充分理由,谁能指出我做错了什么或给我任何建议?

最佳答案

尝试用 MainWnd 的 HWND 成员替换 Msg.hwnd。如果可行,则 Msg.hwnd 不是获取消息的正确窗口(在 Tanslate Accelerator 参数中)。

关于c++ - WinAPI - 菜单加速器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12848500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com