- 締切済み
ウィンドウスタイルの変更
現象を文章で書きます。 まず始めに、ウィンドウスタイルにWS_BORDER | WS_CHILD | WS_VISIBLE | WS_THICKFRAME(サイズ変更境界を持つウィンドウ)を設定したボタンを作りました。 それを後の処理で style = GetWindowLongPtr(hWnd,GWL_STYLE); //ウィンドウスタイルの取得 style ^= WS_THICKFRAME; //style XOR WS_THICKFRAMESetWindowLongPtr(hWnd,GWL_STYLE,style); //新しいウィンドウスタイルを設定 としたらボタンのサイズ変更は出来なくなるのですが、 サイズ変更境界が表示されたままになります。 その状態でウィンドウを最小化、元に戻すとするとサイズ変更境界だけ消えたような変な形のボタンになります。 これがどうしてもいやなのです。 原因もわかりません。 対処法を教えてもらえないでしょうか? 環境はBorlandです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- FAY
- ベストアンサー率49% (95/193)
style &= ~WS_THICKFRAME; style &= ~WS_BORDER; としてスタイルを設定した後、InvalidateRect()などで 更新してあげましょう。サイズ変更枠が消えます。 ボタンの大きさをサイズ変更枠の外側に合わせたい場合は GetSystemMetrics()でサイズ変更枠の幅と高さを取得して その分だけMoveWindow()でボタンサイズを大きくしてあげる必要があります。
- FAY
- ベストアンサー率49% (95/193)
>サイズ変更境界だけ消えたような変な形のボタンになります というのは外側の枠が細線になったボタンのことですか? >これがどうしてもいやなのです どういう形にしたいのでしょうか。
補足
>どういう形にしたいのでしょうか。 最初が WS_BORDER | WS_CHILD | WS_VISIBLE | WS_THICKFRAME という状態だったので、 WS_THICKFRAMEを抜いた WS_BORDER | WS_CHILD | WS_VISIBLE の状態の見た目にしたいのです。 お願いします。
- FAY
- ベストアンサー率49% (95/193)
>style ^= WS_THICKFRAME style &= ~WS_THICKFRAME では?
補足
すみません、現象がかわりません。 あと気になっているので質問させてください。 この現象が起きるのは自分の関数の使い方が間違っているからとかではないですよね? みなさんの環境でも起きますよね?
お礼
ありがとうございます。 一度試してみます。