0

デフォルトの動作でボタンを作成しようとしています。つまり、ユーザーが ENTER を押すと、ボタンが起動します。WS_TABSTOP スタイルでボタンを作成し、BS_DEFPUSHBUTTON に WPARAM パラメータがある BM_SETSTYLE メッセージを送信しましたが、まだ機能していません。

HWND hwnd_Ok = CreateWindow("button", "Ok", WS_VISIBLE | WS_CHILD | WS_TABSTOP, 285, 195, 70, 25, hwnd, (HMENU)OK_BUTTON, NULL, NULL);


SendMessage(hwnd_Ok, BM_SETSTYLE, (WPARAM)BS_DEFPUSHBUTTON, TRUE);
4

2 に答える 2

4

コントロールの WndProcでメッセージWM_GETDLGCODEを取得するために処理しようとしています。サンプルコード:WM_KEYDOWNVK_RETURN

case WM_GETDLGCODE: {
  if(wParam==VK_RETURN) {
    return DLGC_WANTALLKEYS;
  }
}
break;
于 2012-11-20T15:07:51.793 に答える
1

BS_DEFPUSHBUTTONは、ボタンに追加された単なるフラグです。説明する動作(および他の多くのフィールドナビゲーション動作)は、実際にはによって実装されIsDialogMessageます。これは、モーダルダイアログボックスです。

独自のウィンドウクラス(またはモードレスダイアログ)でこれを処理しようとしている場合は、IsDialogMessageをメッセージループに追加して、ダイアログスタイルの処理を取得できます。

于 2012-06-13T19:45:39.307 に答える