掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
アクセラレータキーがうまくいかないのは? (ID:50761)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>どちらが原因で失敗しているのかをまず突き止めてください。 >もちろん,MSDNを参照するのは必須事項です。 やっと失敗する原因がわかりました。 後者のTranslateAcceleratorが失敗しているようです。 LoadAcceleratorsで失敗したのであればhAccelがNULLで 読み込み失敗のメッセージボックスが表示されるのに表示されずに 通り抜けていったのと、設定したアクセラレータキーを押すと TranslateAcceleratorの戻り値(失敗)を返すのでおかしいと 思われるのはTranslateAcceleratorです。 過去に作ったNMail(NyantaMail)などのソースではこのような LoadAcceleratorsで失敗する事がなかったのでどうしてこんな事に なったのかがいまいち理解できていないです。 問題があると思われる部分のコードを載せます。 HINSTANCE hInst; HWND hParent; HACCEL hAccel; static HWND hStatus; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lParamszCmd, int nCmdShow){ MSG msg; hInst = hInstance; if(!hPrevInst){ if(!InitApp(hInstance)){ return FALSE; } } if(!InitInstance(hInstance, nCmdShow)){ return FALSE; } hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR1)); if(hAccel == NULL){ MessageBox(NULL, "アクセラレータの組込みに失敗しました", "Mail Viewer", MB_OK); } if(hParent == NULL){ return(0); } while(GetMessage(&msg, NULL, 0, 0)){ if(!TranslateAccelerator(hParent, hAccel, &msg)){ TranslateMessage(&msg); DispatchMessage(&msg); } } return msg.wParam; } //ウィンドウ・クラスの登録 ATOM InitApp(HINSTANCE hInst) { WNDCLASSEX wcex; wcex.hInstance = hInst; wcex.lpszClassName = szWinName; wcex.lpfnWndProc = WndProc; wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.cbSize = sizeof(WNDCLASSEX); wcex.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1)); wcex.hIconSm = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1)); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1); wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); return(RegisterClassEx(&wcex)); } //ウィンドウの生成 BOOL InitInstance(HINSTANCE hInst, int nCmdShow) { HWND hWnd; hWnd = CreateWindow(szWinName, "Mail Viewer", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, NULL); if(!hWnd){ return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); hParent = hWnd; return TRUE; }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.