0

c++ win32 API を使用してダイアログ ボックスを作成しました... 3 つのテキスト ボックス、1 つのコンボ ボックス、3 つのボタンがあります...

今、私は2つの問題を抱えています...

1.ENTERボタンを押すと、2番目のボタン(ID_OK)関数が呼び出されますが、最初のボタン(ID_MYBUTTON)を呼び出したい...

2.私はテキストボックスにフォーカスするためにコードを使用しています.

SetFocus(GetDlgItem(_hwnd, IDC_NAME));

しかし、そのダイアログボックスにフォーカスすることはできません。つまり、カーソル位置はそこにありますが、入力したときに値を取得できません...

誰でも解決できますか?

4

1 に答える 1

2

これはあなたの両方の質問に答えるかもしれません: http: //blogs.msdn.com/b/oldnewthing/archive/2004/08/02/205624.aspx

DM_SETDEFIDメッセージを使用して、ダイアログのデフォルトボタンを設定します

SetFocus()の代わりにWM_NEXTDLGCTLメッセージを使用してください

// set default button
SendMessage(_hwnd, DM_SETDEFID, (WPARAM)ID_MYBUTTON, 0);
//TODO: if the former default button's style remains, update with BM_SETSTYLE

// set focus
SendMessage(_hwnd, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(_hwnd, IDC_NAME), TRUE);
于 2012-10-22T11:32:06.753 に答える