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

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

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

Re[2]: タイトルバーの色を変更する


(過去ログ 106 を表示中)

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

■63008 / inTopicNo.1)  タイトルバーの色を変更する
  
□投稿者/ S.ベッテル (1回)-(2011/11/15(Tue) 18:30:48)

分類:[C#] 

フォームのタイトルバーの色を変えたいと思っていて、
自分以外のアプリケーションはシステムカラーのままにしておきたいのですが?
引用返信 編集キー/
■63010 / inTopicNo.2)  Re[1]: タイトルバーの色を変更する
□投稿者/ shu (1089回)-(2011/11/15(Tue) 21:09:50)
No63008 (S.ベッテル さん) に返信

枠なしフォームにして、移動、リサイズを自分で実装するとか。
タイトルバー部分はパネル類を使えばそれっぽく出来ます。
引用返信 編集キー/
■63014 / inTopicNo.3)  Re[1]: タイトルバーの色を変更する
□投稿者/ Azulean (872回)-(2011/11/15(Tue) 22:36:49)
No63008 (S.ベッテル さん) に返信
> フォームのタイトルバーの色を変えたいと思っていて、
> 自分以外のアプリケーションはシステムカラーのままにしておきたいのですが?

どうしてそこまでやりたいのでしょうか?
個人的には Windows のメジャーバージョンが上がったときに、追従できなくなるのでやめた方がよいと思います。


たとえば、自分でそれっぽく作ったとしてましょう。
しかしながら、XP におけるクラシックと標準のテーマではずいぶんと差がありますよね?また、Vista 以降だと Aero が有効だとグラスと呼ばれる半透明に透けるタイトルバーになります。それもカバーするのでしょうか?

作る労力に見合わない、大きくテーマが変わったときに追従できなくてダサくなるというところを考えると、個人的にはやめておいた方がよいと思っています。
仮に自分のウィンドウだけ色を変えれたとしても、周りのウィンドウと合わなくなりますし、各作者が好き勝手に色を設定できると、デスクトップのウィンドウを見るだけで憂鬱になりますね…。
引用返信 編集キー/
■63021 / inTopicNo.4)  Re[2]: タイトルバーの色を変更する
□投稿者/ S.ベッテル (2回)-(2011/11/16(Wed) 11:59:02)
No63010 (shu さん) に返信
> ■No63008 (S.ベッテル さん) に返信
>
> 枠なしフォームにして、移動、リサイズを自分で実装するとか。
> タイトルバー部分はパネル類を使えばそれっぽく出来ます。

shu 様

早速のご回答ありがとうございます

やはり自前で作成しないとだめですか。
APIやFrameworkのクラスで、その手の変更ができればと思っていたのですが...
引用返信 編集キー/
■63022 / inTopicNo.5)  Re[2]: タイトルバーの色を変更する
□投稿者/ S.ベッテル (3回)-(2011/11/16(Wed) 12:03:07)
No63014 (Azulean さん) に返信

Azulean 様

早速のご回答ありがとうございます

私も同じ考えです。
自前で作成しないと実現できなようであれば、別の方法を検討します。

引用返信 編集キー/
■63029 / inTopicNo.6)  Re[3]: タイトルバーの色を変更する
□投稿者/ shu (1093回)-(2011/11/16(Wed) 13:42:52)
No63022 (S.ベッテル さん) に返信
> ■No63014 (Azulean さん) に返信
>
> Azulean 様
>
> 早速のご回答ありがとうございます
>
> 私も同じ考えです。
> 自前で作成しないと実現できなようであれば、別の方法を検討します。
>
同じ考えならこの質問はないと思いますが・・・
引用返信 編集キー/
■63036 / inTopicNo.7)  Re[4]: タイトルバーの色を変更する
□投稿者/ S.ベッテル (4回)-(2011/11/16(Wed) 17:17:25)
No63029 (shu さん) に返信
> 同じ考えならこの質問はないと思いますが・・・

APIやFrameworkのクラスで、その手の変更ができればと思っていたのですが...

引用返信 編集キー/
■63037 / inTopicNo.8)  Re[5]: タイトルバーの色を変更する
□投稿者/ shu (1094回)-(2011/11/16(Wed) 17:26:54)
No63036 (S.ベッテル さん) に返信
> ■No63029 (shu さん) に返信
>>同じ考えならこの質問はないと思いますが・・・
>
> APIやFrameworkのクラスで、その手の変更ができればと思っていたのですが...
>
API使えば可能かもしれません。それも含めてAzuleanさんの意見はあると思います。
引用返信 編集キー/
■63050 / inTopicNo.9)  Re[6]: タイトルバーの色を変更する
□投稿者/ S.ベッテル (5回)-(2011/11/17(Thu) 14:09:24)
No63037 (shu さん) に返信

> API使えば可能かもしれません。

お願いします、教えてください。
引用返信 編集キー/
■63065 / inTopicNo.10)  Re[2]: タイトルバーの色を変更する
□投稿者/ Azulean (876回)-(2011/11/17(Thu) 22:36:20)
No63014 (Azulean さん) に返信
> 仮に自分のウィンドウだけ色を変えれたとしても、周りのウィンドウと合わなくなりますし、
> 各作者が好き勝手に色を設定できると、デスクトップのウィンドウを見るだけで憂鬱になりますね…。

私は上述のような意見を述べました。
しかし、「私も同じ考えです」と書かれているのに、「実現したい」と相反していますね。

なお、私は具体的に API の存在を知りません。知らないだけで存在するかもしれませんが、上述のような考えを持っているため、現時点までに存在するかどうかの調査をしたことはありません。


# shu さんも私も、存在する・しないを断言していません。
# よく読んでくださいますよう、よろしくお願いします。
引用返信 編集キー/
■63067 / inTopicNo.11)  Re[3]: タイトルバーの色を変更する
□投稿者/ 魔界の仮面弁士 (2405回)-(2011/11/18(Fri) 07:57:00)
No63021 (S.ベッテル さん) に返信
> やはり自前で作成しないとだめですか。
おそらくは、単純に色だけ変更するような機能は無いと思います。


> APIやFrameworkのクラスで、その手の変更ができればと思っていたのですが...
標準のタイトルバーを描画するための手順であれば存在しています。

単純なタイトルバーを描画するための DrawCaption API や DrawFrameControl API、
あるいは ControlPaint.DrawCaptionButton メソッドなど。テーマに対応させるならば
DrawThemeEdge API や DrawThemeBackgroundEx API や DrawThemeIcon API あるいは
System.Windows.Forms.VisualStyles.VisualStyleElement.Window.Caption クラスなど。
(Aero かどうかで独自描画の有無を変えるなら DwmIsCompositionEnabled での判定も必要かも)

しかし、色を変更するなどのカスタマイズしたものを表示させたい場合はこれらでは不足で、
一部またはすべてをオーナードロー実装する手間は必要となってしまうでしょう。
タイトルバーの色(背景色)をオーナードローするとなると、その上の文字やボタンも
合わせて描かねばならないため、結局は、すべてを描画することになってくるでしょうし。


なお、NonClient(非クライアント)領域へのタイトルバー描画については、
WndProc メソッドをオーバーライドして、WM_NCPAINT 等に対して行うことになります。
また、タイトルバーの高さやボタンの位置などを変化させた場合は、WM_NCHITTEST の
ヒットテストに対して、座標に応じた戻り値を返却してみてください。


以下、参考情報として。
http://hp.vector.co.jp/authors/VA016117/bmpcap1.html
http://www.vbstation.net/spec/T1.htm
http://msdn.microsoft.com/ja-jp/magazine/cc163435.aspx
http://msdn.microsoft.com/en-us/library/bb688195.aspx
引用返信 編集キー/
■63068 / inTopicNo.12)  Re[7]: タイトルバーの色を変更する
□投稿者/ shu (1096回)-(2011/11/18(Fri) 08:08:10)
No63050 (S.ベッテル さん) に返信
> ■No63037 (shu さん) に返信
>
>>API使えば可能かもしれません。
>
> お願いします、教えてください。

No63065 (Azulean さん)の言うように存在を知っているわけではありません。
あくまでAzulean さんと同じ考えならAPIでも実装可能可否に関わらずタイトルバーの色変更は行わないのでは
ないかという事です。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -