修正と補足。
case WM_CTLCOLORSTATIC:
{
if( GetDlgCtrlID( ( HWND )lParam ) == IDC_CHECK1 )
{
// チェックボックスの背景描画に、↑で作ったブラシを使う
SetBkMode( ( HDC )wParam, TRANSPARENT ); // この行を追加
return ( LRESULT )hBrush;
}
break;
}
それから、実際には、WM_CREATE の中でブラシを作る処理を、OS が XP 以降かどうか、
また、ビジュアルスタイルが有効かどうか(IsThemeActive 関数で判定)を調べてから行
うべきでしょう。
シャノンさん。
返信ありがとうございます。
>#ちなみに、ダイアログリソースを使わずに動的に生成しているのには、何か理由が?
好みの問題です。ダイアログエディタを使うとなぜかストレスが溜まります。
元々勉強のためにCreateWindowを多用していた経緯もあります。
それと、ダイアログのIDを長くしすぎるとCreateDialogで失敗したような覚えがあります。(これ
がダイアログエディタを使わなくなったきっかけだったような・・・)
とはいえ、いい機会なので久々にダイアログエディタとCreateDialogを使ってみました。
シャノンさんの話を参考に実装してみたところ無事透過できました。
ダイアログの背景色を白くするのはこいつっぽいですね。
EnableThemeDialogTexture( m_hPageList[TAB_BASIC], ETDT_ENABLETAB);
思いのほかダイアログエディタが快適なので、これを使うのも悪くないかな・・・と思ってます。
ありがとうございました。
> タブコントロールの背景色にはグラデーションがかかっており、上の方ほど白く、下の方
> ほど暗くなっています。
そういわれてみれば、下のほうに貼り付けたチェックボックスの方が背景とマッチしてなかったか
も・・・・
目の錯覚かと思ってましたorz 液晶ですし
> グラデーションブラシ
気合ですねw
というかよくこんなん思いつきますね。
やってることは理解できるので後日試してみます。
ありがとうございました。
ブラシの方はまだ試してませんがとりあえず、解決ということで。
ありがとうございました。