スタティックウインドウで枠の色、サイズを変えるには

[戻る]
hako 2002/02/14(木) 18:31:19
こんにちは。
今回はスタティックウィンドウの境界枠について質問があります。

1:境界枠は消せるのか?
2:境界枠は色、幅をかえられるのか?

HTML風にスタティックウインドウの各境界線を消したレイアウトにしたいのですが、
同様の質問に返事があるものが見つかりませんでした。

MainFrameの背景色を変えることも試みましたがうまくいきません。
変わりにこんなことしたよ、というものでもいいので
どなたか知恵をお貸しください。
よろしくお願いします。

hako 2002/02/14(木) 22:49:31
一般ウィンドウスタイルで”WS_BORDER”は”ボーダーがある”
と説明があったため

PreCreateWindow(CREATESTRUCT& cs) で

if( !CFrameWnd::PreCreateWindow(cs) )
  return FALSE;
cs.dwExStyle ^= WS_BORDER;
return TRUE;


を追加してみましたがうまくいきません。

hako 2002/02/14(木) 22:49:34
一般ウィンドウスタイルで”WS_BORDER”は”ボーダーがある”
と説明があったため

PreCreateWindow(CREATESTRUCT& cs) で

if( !CFrameWnd::PreCreateWindow(cs) )
  return FALSE;
cs.dwExStyle ^= WS_BORDER;
return TRUE;


を追加してみましたがうまくいきません。

hako 2002/02/14(木) 22:53:41
申し訳ありません、書いている途中で2つ送信してしまいました。

上記は境界(枠?)をなしにすという意味ではないのでしょうか?
それともコードが誤っているのでしょうか。

どなたか、お返事待ってます。
よろしくお願いします。

Bun 2002/02/14(木) 23:19:59
>cs.dwExStyle ^= WS_BORDER;

cs.dwExStyle &= ~WS_BORDER; かな? (EXがないからちゃうかな。よー知らん(^^))
それとも cs.Style &= ~WS_BORDER; かな?

>HTML風にスタティックウインドウの各境界線を消したレイアウトにしたいのですが、
>同様の質問に返事があるものが見つかりませんでした。
>MainFrameの背景色を変えることも試みましたがうまくいきません。

からすると

cs.dwExStyle &= ~WS_EX_CLIENTEDGE かなぁ?

ただし、この場合Viewクラスも同じ処理が必要になります。
MainFrameとviewの境界線をなくすにはこれでいけるはず。

スタティックウィンドウがなにかよーわからんし。
無責任な人はフロ入って寝ま〜す。(^^;

hako 2002/02/16(土) 13:10:37
>cs.dwExStyle &= ~WS_BORDER; かな? (EXがないからちゃうかな。よー知らん(^^))
>それとも cs.Style &= ~WS_BORDER; かな?
>cs.dwExStyle &= ~WS_EX_CLIENTEDGE かなぁ?

Bunさん お返事ありがとうございます。

上記試してみました。
うーん、"WS_BORDER"だったり"WS_EX_CLIENTEDGE"ではうまくいきませんでした。

ここでいうボーダーはどうも違うものを指しているみたいでした。
ボーダーを表示にしたら境界が2重になったので
メインフレームを分けているボーダー(?)とはまた違うようです。
メインフレームを分けている線はなんというのでしょうか?

よう分からん・・・。
もう少し色々ためしてみます。
またお気づきのところあれば教えてください。

では。

Bun 2002/02/16(土) 13:41:16
>1:境界枠は消せるのか?
>2:境界枠は色、幅をかえられるのか?

スタティックウィンドウって
ダイアログ上のスタティックコントロールの話ですか?

であれば境界線は WS_BORDER を指していると思います。
CWnd::ModifyStyle()でRemoveできませんかね。

色は変更できます。
CWnd::OnCtlColor()で背景色を親に返せばOK。

幅はCWnd::MoveWindow(), SetWindowPos()あたりで変更できるでしょう。

はずしていたらゴメンナサイ。

hako 2002/02/16(土) 20:45:07
度々お返事ありがとうございます。
ごめんんさい、説明が足りませんでした。

スタティックウィンドウっていう言い方が間違っていました。
SDIでCSPlitterを利用して分割したペ画面を仕切る境界線のことです。

なかなか解決法が見つかりません。
分割の境界線はメインフレームの周囲枠(←なんていうのか分かりません)
を変更するのと同列ということなのでしょうか?

kazuma 2002/02/17(日) 19:34:36
境界線の色を変えるのは、
CSplitterWnd::OnDrawSplitter をオーバーライドすれば出来そうですね。
幅を変えたり消したりするのは少し面倒そうですが、
CSplitterWnd のソースを読んでがんばればできると思いますよ。

hako 2002/02/18(月) 18:29:49
[[解決]]
回答ありがとうございます。

まずは試してみてみます。

他にこんなHPを見つけました。
スプリッタを利用した場合の色々なことが書いてありました。

http://www.bd.wakwak.com/~opapa/VC/Bogus/Splitter.htm

わたしはまだうまくいっていませんが
同じようなことでお悩みの方は見てください。

古いスレッドには追加発言できません。