タブコントロールの背景色を取得するには? – 固定ページ 2 – プログラミング – Home

タブコントロールの背景色を取得するには...
 
通知
すべてクリア

[解決済] タブコントロールの背景色を取得するには?

固定ページ 2 / 2

aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

修正と補足。

case WM_CTLCOLORSTATIC:
{
 if( GetDlgCtrlID( ( HWND )lParam ) == IDC_CHECK1 )
 {
  // チェックボックスの背景描画に、↑で作ったブラシを使う
  SetBkMode( ( HDC )wParam, TRANSPARENT ); // この行を追加
  return ( LRESULT )hBrush;
 }

 break;
}

それから、実際には、WM_CREATE の中でブラシを作る処理を、OS が XP 以降かどうか、
また、ビジュアルスタイルが有効かどうか(IsThemeActive 関数で判定)を調べてから行
うべきでしょう。


返信引用
es
 es
(@es)
ゲスト
結合: 22年前
投稿: 17
Topic starter  

シャノンさん。
返信ありがとうございます。

>#ちなみに、ダイアログリソースを使わずに動的に生成しているのには、何か理由が?
好みの問題です。ダイアログエディタを使うとなぜかストレスが溜まります。
元々勉強のためにCreateWindowを多用していた経緯もあります。
それと、ダイアログのIDを長くしすぎるとCreateDialogで失敗したような覚えがあります。(これ
がダイアログエディタを使わなくなったきっかけだったような・・・)

とはいえ、いい機会なので久々にダイアログエディタとCreateDialogを使ってみました。
シャノンさんの話を参考に実装してみたところ無事透過できました。

ダイアログの背景色を白くするのはこいつっぽいですね。
EnableThemeDialogTexture( m_hPageList[TAB_BASIC], ETDT_ENABLETAB);

思いのほかダイアログエディタが快適なので、これを使うのも悪くないかな・・・と思ってます。
ありがとうございました。

> タブコントロールの背景色にはグラデーションがかかっており、上の方ほど白く、下の方
> ほど暗くなっています。
そういわれてみれば、下のほうに貼り付けたチェックボックスの方が背景とマッチしてなかったか
も・・・・
目の錯覚かと思ってましたorz 液晶ですし

> グラデーションブラシ
気合ですねw
というかよくこんなん思いつきますね。
やってることは理解できるので後日試してみます。

ありがとうございました。


返信引用
es
 es
(@es)
ゲスト
結合: 22年前
投稿: 17
Topic starter  

ダイアログリソースを使わなり理由を少し訂正。

使わなくなリ始めた当時は、独自のコントロールや描画を使うことが多かったので、ダイアログエディ
タでは対応できなかった。

こんなん。

それでそのまま現在へ。
今回の場合ははじめから普通にダイアログリソース使っとけばよかったですね;;


返信引用
es
 es
(@es)
ゲスト
結合: 22年前
投稿: 17
Topic starter  

ブラシの方はまだ試してませんがとりあえず、解決ということで。
ありがとうございました。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

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