3
내 단축키를 '{Ctrl + R}'키를 누르면 메뉴에 추가하려고합니다. ID_VIEW_RESULTS
을 보내야합니다.WinAPI - 메뉴 가속기가 작동하지 않습니다.
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;
}
나는 이것이 작동하지 않는 좋은 이유를 알지 못한다. 누구도 내가 무엇을 지적 할 수 있는가? 잘못했거나 제안을 해 주시겠습니까?
Msg.hwnd를 MainWnd의 HWND 멤버로 바꾸어보십시오. Msg.hwnd보다 작동하면 Tanslate Accelerator 매개 변수에서 메시지를 가져 오는 올바른 창이 아닙니다. –
@Edwin 완벽하게 작동했습니다. 감사합니다. 나는 그것이 단순해야만한다는 것을 알았다. 어쨌든, 당신은 내가 그것을 받아 들일 수 있도록 답변으로 게시해야합니다 :) –
done! 다행이었습니다. –