実現したいこと
MFCで(VisualStudio2022>MFC>ダイアログ)で作成したフレームに
F7ぐらいを押下したら動作させるプログラムを書きたいのですが
MFCでF7を押下したら動作をいう 押下したらというのがMFCではどのよう記述するのか分からないので調査方法をお伺いしたい。
前提
MFCで(VisualStudio2022>MFC>ダイアログ)で作成したフレーム
の後半は以下の通りなのですが何かボタンを押された時に動作というのをどのように記述して良いのか不明なのです。
// 唯一の CMFCApplication1App オブジェクト CMFCApplication1App theApp; // CMFCApplication1App の初期化 BOOL CMFCApplication1App::InitInstance() { // アプリケーション マニフェストが visual スタイルを有効にするために、 // ComCtl32.dll Version 6 以降の使用を指定する場合は、 // Windows XP に InitCommonControlsEx() が必要です。さもなければ、ウィンドウ作成はすべて失敗します。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // アプリケーションで使用するすべてのコモン コントロール クラスを含めるには、 // これを設定します。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); AfxEnableControlContainer(); // ダイアログにシェル ツリー ビューまたはシェル リスト ビュー コントロールが // 含まれている場合にシェル マネージャーを作成します。 CShellManager *pShellManager = new CShellManager; // MFC コントロールでテーマを有効にするために、"Windows ネイティブ" のビジュアル マネージャーをアクティブ化 CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); // 標準初期化 // これらの機能を使わずに最終的な実行可能ファイルの // サイズを縮小したい場合は、以下から不要な初期化 // ルーチンを削除してください。 // 設定が格納されているレジストリ キーを変更します。 // TODO: 会社名または組織名などの適切な文字列に // この文字列を変更してください。 SetRegistryKey(_T("アプリケーション ウィザードで生成されたローカル アプリケーション")); CMFCApplication1Dlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: ダイアログが <OK> で消された時のコードを // 記述してください。 } else if (nResponse == IDCANCEL) { // TODO: ダイアログが <キャンセル> で消された時のコードを // 記述してください。 } else if (nResponse == -1) { TRACE(traceAppMsg, 0, "警告: ダイアログの作成に失敗しました。アプリケーションは予期せずに終了します。\n"); TRACE(traceAppMsg, 0, "警告: ダイアログで MFC コントロールを使用している場合、#define _AFX_NO_MFC_CONTROLS_IN_DIALOGS を指定できません。\n"); } // 上で作成されたシェル マネージャーを削除します。 if (pShellManager != nullptr) { delete pShellManager; } #if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS) ControlBarCleanUp(); #endif // ダイアログは閉じられました。アプリケーションのメッセージ ポンプを開始しないで // アプリケーションを終了するために FALSE を返してください。 return FALSE; }
昔のMFCだとWindowプロシージャで
LRESULT CALLBACK WinProc(HWND hwnd,UINT msg,WPARAM wp,LPARAM lp){ switch(msg){ case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd,msg,wp,lp); }
みたいな感じで取得できたと勝手に思っているのです……
該当のソースコード
上記の通りです。
試したこと
MFC キー操作 ググってみた
http://bingobingobingo.blog49.fc2.com/blog-entry-245.html
LRESULT CALLBACK WinProc(HWND hwnd,UINT msg,WPARAM wp,LPARAM lp){ switch(msg){ case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd,msg,wp,lp); }
を埋め込もうと四苦八苦しておりました……
もしくはMFCは諦めてWinMainで作成しようかと迷っております……
(https://bituse.info/winapi/4 を見ながら……)
補足情報(FW/ツールのバージョンなど)
VisualStudio2022 MFC C++で開発しております。
どなたかMFCでキー入力の取得方法の調べ方を教えて頂けないでしょうか?
回答2件
あなたの回答
tips
プレビュー