【フォーカス】Enter押下で次フォーカスに移動
基底クラスの作成: まず、共通機能を持つ基底クラスを作成します。このクラスは MFC の CDialog クラスか CWnd クラスから派生させることができます。
メッセージマップの設定: 基底クラス内でメッセージマップを設定し、キーボードイベントを処理します。特に、WM_KEYDOWN メッセージを捕捉して、Enter キーが押されたときの動作を定義します。
Enter キーの処理: Enter キーが押されたときに次のコントロールにフォーカスを移動するためのロジックを実装します。これは CWnd::NextDlgCtrl 関数を使って簡単に行うことができます。
共通クラスの使用: 作成した基底クラスを継承して、アプリケーション内の各ダイアログやウィンドウクラスを作成します。これにより、すべてのダイアログやウィンドウで Enter キーによるフォーカス移動の機能が有効になります。
// MyBaseClass.h - 基底クラスのヘッダーファイル
#include <afxwin.h>
class MyBaseClass : public CDialog
{
public:
// コンストラクタ、デストラクタなどの宣言
protected:
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
DECLARE_MESSAGE_MAP()
};
// MyBaseClass.cpp - 基底クラスの実装ファイル
#include "MyBaseClass.h"
BEGIN_MESSAGE_MAP(MyBaseClass, CDialog)
ON_WM_KEYDOWN()
END_MESSAGE_MAP()
void MyBaseClass::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if (nChar == VK_RETURN)
{
// Enter キーが押されたときの処理
NextDlgCtrl();
return;
}
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}