2012-10-11 2 views
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; 
} 

나는 이것이 작동하지 않는 좋은 이유를 알지 못한다. 누구도 내가 무엇을 지적 할 수 있는가? 잘못했거나 제안을 해 주시겠습니까?

+1

Msg.hwnd를 MainWnd의 HWND 멤버로 바꾸어보십시오. Msg.hwnd보다 작동하면 Tanslate Accelerator 매개 변수에서 메시지를 가져 오는 올바른 창이 아닙니다. –

+0

@Edwin 완벽하게 작동했습니다. 감사합니다. 나는 그것이 단순해야만한다는 것을 알았다. 어쨌든, 당신은 내가 그것을 받아 들일 수 있도록 답변으로 게시해야합니다 :) –

+0

done! 다행이었습니다. –

답변

1

Msg.hwnd를 MainWnd의 HWND 멤버로 바꾸어보십시오. Msg.hwnd보다 작동하면 Tanslate Accelerator 매개 변수에서 메시지를 가져 오는 올바른 창이 아닙니다.

관련 문제