スタティックウインドウで枠の色、サイズを変えるには – プログラミング – Home

スタティックウインドウで枠の色、サイズ...
 
通知
すべてクリア

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


hako
 hako
(@hako)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

こんにちは。
今回はスタティックウィンドウの境界枠について質問があります。

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

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

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


引用未解決
トピックタグ
hako
 hako
(@hako)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

一般ウィンドウスタイルで”WS_BORDER”は”ボーダーがある”
と説明があったため

PreCreateWindow(CREATESTRUCT& cs) で

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

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


返信引用
hako
 hako
(@hako)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

一般ウィンドウスタイルで”WS_BORDER”は”ボーダーがある”
と説明があったため

PreCreateWindow(CREATESTRUCT& cs) で

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

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


返信引用
hako
 hako
(@hako)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

申し訳ありません、書いている途中で2つ送信してしまいました。

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

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


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

>cs.dwExStyle ^= WS_BORDER;

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

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

からすると

cs.dwExStyle &= ~WS_EX_CLIENTEDGE かなぁ?

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

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


返信引用
hako
 hako
(@hako)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

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

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

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

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

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

では。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

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

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

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

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

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

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


返信引用
hako
 hako
(@hako)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

度々お返事ありがとうございます。
ごめんんさい、説明が足りませんでした。

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

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


返信引用
kazuma
 kazuma
(@kazuma)
ゲスト
結合: 23年前
投稿: 217
 

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


返信引用
hako
 hako
(@hako)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

回答ありがとうございます。

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

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

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました