重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

ボタン1にフォーカスがある時、
BS_DEFPUSHBUTTONのスタイルになり、
Enterキーが使えますよね?
ここからTabキーを押下すると、
ボタン1では、フォーカスがないので、
Enterキーはつかえません。
ということは、この時は、BS_DEFPUSHBUTTONのスタイルではない?

自分で、BS_DEFPUSHBUTTONのスタイルのON/OFFを行うには、
どの様にしたら良いでしょうか?

SetWindowLong(GetDlgItem(hWnd, GWL_ID), GWL_EXSTYLE, BS_DEFPUSHBUTTON);
と書いて、ONの処理は出来た?(太い境界線があるので)のですが、
スタイルOFFとするときの処理がわかりません。

環境は、Win98&SDK&VC6.0で作成してます。

A 回答 (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);
    • good
    • 0
この回答へのお礼

ありがとうございました。出来ました。
しかも、ソース付きで、
丁寧な回答で解りやすかったです。

BS_DEFPUSHBUTTONって、拡張ウィンドウスタイルじゃなかったんですね・・。
GWL_STYLEとか、あれこれ試してみたんですが、
自分とは処理の仕方が、違ってました。

ちなみにSendMessage()でも実現できそうかもしれませんね。

お礼日時:2002/08/12 13:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!