に私は、そのIDがIDC_EDITCONTROL_A
とIDC_EDITCONTROL_B
であり、それぞれm_editControlA
とm_editControlB
、として定義された変数を有する2エディットコントロールと対話MainDialog.cpp
を作成しました。シミュレーションキーボード入力はC++ MFCアプリ
はまた、私は、そのIDがIDC_MFCBUTTON_KEY_X
とIDC_MFCBUTTON_KEY_Y
ある2ボタンを持っている、との変数は、それぞれm_buttonKeyX
とm_buttonKeyY
、です。以下は
X
または
Y
)を送信
各ボタンを持つことができる方法を理解しようとしています #include "afxdialogex.h"
IMPLEMENT_DYNAMIC(CMainDialog, CDialogEx)
CMainDialog::CMainDialog(CWnd* pParent): CDialogEx(IDD_MAIN_DIALOG, pParent)
{
}
CMainDialog::~CMainDialog()
{
}
void CMainDialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDITCONTROL_A, m_editControlA);
DDX_Control(pDX, IDC_EDITCONTROL_B, m_editControlB);
DDX(Control(pDX, IDC_MFCBUTTON_KEY_X, m_buttonKeyX);
DDX(Control(pDX, IDC_MFCBUTTON_KEY_Y, m_buttonKeyY);
}
BEGIN_MESSAGE_MAP(CMainDialog, CDialogEx)
ON_EN_CHANGE(IDC_EDITCONTROL, &CMainDialog::OnEnChangeEditA)
ON_BN_CLICKED(IDC_MFCBUTTON_KEY_X, &CMainDialog::OnBnClickedButtonX)
ON_BN_CLICKED(IDC_MFCBUTTON_KEY_Y, &CMainDialog::OnBnClickedButtonY)
END_MESSAGE_MAP()
void CMainDialog::OnBnClickedButtonX()
{
m_editControlA.SetWindowTextW(_T("X")); // test
}
void CMainDialog::OnBnClickedButtonX()
{
m_editControlA.SetWindowTextW(_T("Y")); // test
}
ソースファイル内のコードですが選択されている場合はです。本質的には、私はキーボード入力をシミュレートしたい。
私はhow to simulate keyboard eventsとさらにsendMessageについてのドキュメントを読んだことがありますが、C++の知識は非常に基本的なので、実装方法を理解できませんでした。また、私のprevious questionに続いて、GetFocus
が役に立つと思っていますが、依然として私の主な問題は現在入力を送信しています。
どのようなコードや役に立つリンクがあれば、アプリ内でのキーボード入力をどのようにシミュレートできるかを知る上で非常に役立ちます。
問題は、ボタンを押したときに編集コントロールがフォーカスを失うことです。以前の質問のコメント作成者は、これを解決する方法をいくつか提案しました。もう一つの考え方は、ボタンを 'SS_NOTIFY'スタイルの静的コントロールで置き換えることです。統計はデフォルトでフォーカスを受けません。 – zett42
キーボードイベントをシミュレートするのはおそらく間違った方法です。あなたは実際に解決しようとしている問題はどれですか?これは[XY問題](http://xyproblem.info/)のように見えます –