C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: オリジナルデザインのウィンドウを表示したい。


(過去ログ 84 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■49766 / inTopicNo.1)  オリジナルデザインのウィンドウを表示したい。
  
□投稿者/ なっと (24回)-(2010/05/16(Sun) 12:46:27)

分類:[C++/CLI] 

こんにちわ。

ウィンドウそのもののデザインを変更する手法はありますでしょうか?
たとえば、WindowsXPの標準的なウィンドウデザインをMacぽく描画したい…とか。

一応、無理やりぽい手法で実現はできましたが、(Paintイベントで上書き)
これはなんだか違う気がしまして。

フォームの枠を非表示にして、自分でアイコン、タイトル、最大化/最小化ボタン、終了ボタンを描画する
という感じでいいのでしょうか?

よろしくおねがいします。

引用返信 編集キー/
■49767 / inTopicNo.2)  Re[1]: オリジナルデザインのウィンドウを表示したい。
□投稿者/ Hongliang (627回)-(2010/05/16(Sun) 13:48:33)
> フォームの枠を非表示にして、自分でアイコン、タイトル、最大化/最小化ボタン、終了ボタンを描画する
> という感じでいいのでしょうか?
そんな感じです。
枠や枠のドラッグによるリサイズ機能はそのままで良いというのなら、ControlBox と Text の設定でタイトルバーだけ表示させないこともできます。
ただし、いずれの方法にしろ、タイトルバーが表示されていない状態だと、標準ではシステムメニュー(Alt+Space やタスクバーのアイコン右クリックで出る、移動や最小化を行うメニュー)が使用できません。使いたい場合、CreateParams をオーバーライドして Style にWS_SYSMENU を追加する必要があります。
他にも WndProc のオーバーライドで WM_NCHITTEST メッセージを処理すれば、任意の地点において既存の処理(ボーダー付近でのリサイズカーソル変更及びリサイズなど)に委譲させることが可能です。
引用返信 編集キー/
■49772 / inTopicNo.3)  Re[2]: オリジナルデザインのウィンドウを表示したい。
□投稿者/ とっちゃん (506回)-(2010/05/16(Sun) 16:02:46)
とっちゃん さんの Web サイト
C++であれば、WM_NCPAINT などをハンドリングして全部自分で描画すれば好みの風味で好みのウィンドウにすることができます。
あとは、Layerd Window を使えば、四角ではないウィンドウも実現できます。

その他いろいろやる場合は、MSDNライブラリで、WM_NC で始まるメッセージをいろいろとチェックしておくことをお勧めします。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -