• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ボタンのスタイル変更)

ボタンのスタイル変更について

このQ&Aのポイント
  • ボタン1のフォーカス時にはBS_DEFPUSHBUTTONのスタイルになり、Enterキーが使えます。しかし、Tabキーを押下するとボタン1ではフォーカスがなくなるため、Enterキーは使えません。したがって、この時はBS_DEFPUSHBUTTONのスタイルではなくなります。
  • BS_DEFPUSHBUTTONのスタイルをON/OFFするには、SetWindowLong関数を使用します。ONにする場合はSetWindowLong(hWnd, GWL_EXSTYLE, BS_DEFPUSHBUTTON)と書くことで太い境界線が表示されます。しかし、OFFにする処理については記載されていません。
  • この質問の環境はWin98&SDK&VC6.0で作成しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>SetWindowLong(GetDlgItem(hWnd, GWL_ID), GWL_EXSTYLE, BS_DEFPUSHBUTTON); BS_DEFPUSHBUTTONって、拡張スタイルじゃないはずなんですけど・・・ ウィンドウスタイルを変更するときは、他のスタイルが設定されている可能性がありますので、 現在のウィンドウスタイルを取得し、BS_PUSHBUTTONを外して、 BS_DEFPUSHBUTTONを追加するようにしましょう。 HWND hBtn = GetDlgItem(hWnd, GWL_ID); DWORD dwStyle = (DWORD)GetWindowLong(hBtn, GWL_STYLE); dwStyle = (dwStyle ^ BS_PUSHBUTTON) | BS_DEFPUSHBUTTON; SetWindowLong(hBtn, GWL_STYLE, (LONG)dwStyle); てな感じで。 ということで、外すときは、逆の操作になります。 HWND hBtn = GetDlgItem(hWnd, GWL_ID); DWORD dwStyle = (DWORD)GetWindowLong(hBtn, GWL_STYLE); dwStyle = (dwStyle ^ BS_DEFPUSHBUTTON) | BS_PUSHBUTTON; SetWindowLong(hBtn, GWL_STYLE, (LONG)dwStyle);

rewind
質問者

お礼

ありがとうございました。出来ました。 しかも、ソース付きで、 丁寧な回答で解りやすかったです。 BS_DEFPUSHBUTTONって、拡張ウィンドウスタイルじゃなかったんですね・・。 GWL_STYLEとか、あれこれ試してみたんですが、 自分とは処理の仕方が、違ってました。 ちなみにSendMessage()でも実現できそうかもしれませんね。

関連するQ&A