掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
アクセラレータキーがうまくいかないのは? (ID:50752)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
続けざまの質問で申し訳ないのですがアクセラレータキーに関する質問です。 いつもは猫でも分かる〜のアクセラレータキーの書き方でやっていたので 特に問題はなかったのですが、今やっているプログラムの場合猫でもの 書き方と違いWinMain関数に直にCreateWindowなどを書いています。 その状態でアクセラレータキーをロードしてメッセージループに 猫でもと同じようにアクセラレータキーのメッセージも動くように コードを記述したのにもかかわらず、アクセラレータキーが動きません。 これはどうしてでしょうか? 以下に書いたコードを書いておきます。 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lParamszCmd, int nCmdShow){ HWND hWnd; MSG msg; HACCEL hAccel; HWND hMWnd; WNDCLASSEX wcex; wcex.hInstance = hInstance; wcex.lpszClassName = szWinName; wcex.lpfnWndProc = WndProc; wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.cbSize = sizeof(WNDCLASSEX); wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); wcex.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1); wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); if(!RegisterClassEx(&wcex)){ return(0); } hWnd = CreateWindow(szWinName, "Mail Viewer", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, NULL); hMWnd = hWnd; hParent = hWnd; hInst = hInstance; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); hAccel = LoadAccelerators(hCurInst, MAKEINTRESOURCE(IDR_ACCELERATOR1)); if(hParent == NULL){ return(0); } while(GetMessage(&msg, NULL, 0, 0)){ if(!TranslateAccelerator(hParent, hAccel, &msg)){ TranslateMessage(&msg); DispatchMessage(&msg); } } return(msg.wParam); }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.