掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
GetThemeColor()でツールバーの背景色を取得するには? (ID:71859)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
開発環境:Visual C++ 2010 Pro + MFC (Windows7) GetThemeColor()というAPIを使用してツールバーの背景色を 取得したいと思っているのですが、うまくいきません。 Window7の場合ですと、メニューバーと同じような薄い青色のCOLORREF値を 取得したいのです。 http://uploadr.net/file/c294fbfa9f 各ツールボタンについては、TBSTYLE_TRANSPARENTスタイルを指定することにより、 薄い青色で表示することができました。 以下は周囲のボーダーを単色の薄い青色にするためのコードです。 // class CToolBarEx public: CToolBar; void CToolBarEx::DrawBoders(CDC* pDC, CRect& rect) { // m_hReBarThemeはCControlBarクラスのデータメンバです。 COLORREF rgb; HRESULT hr = GetThemeColor(m_hReBarTheme, RP_BACKGROUND, 0, TMT_FILLCOLOR, &rgb); if (hr == S_OK) pDC->SetBkColor(rgb); // 既定クラスの動作ではCThemeHelper::DrawThemeBackgroundをコールしますが、 // それだと各ツールバーの上部の境界線付近に白い影が描画されてしまう。 // できれば単色の薄い青にしたい... HTHEME tmSave = m_hReBarTheme; m_hReBarTheme = NULL; CToolBar::DrawBorders(pDC, rect); m_hReBarTheme = tmSave; } 問題点がいくつかあるので、箇条書きにしますと、 ・RP_BACKGROUNDの定義は「vsstyle.h」にあるらしいので、インクルードした のですが、その状態でコンパイルすると、error C2011: 'BUTTONPARTS' : ' enum' 型の再定義というエラーが表示されます。確かに「tmschema.h」とい うヘッダーで定義されているようなのですが、こちらのヘッダーは自分でイ ンクルードしたものではなく、おそらく"stdafx.h"の中で自動的に取り込ま れているような気がします。かといって「vsstyle.h」をインクルードしな いと、RP_BACKGROUNDが未定義だと怒られます。どのようにすればよいので しょうか? ・とりあえず、上のエラーを回避するためにRP_BACKGROUNDの代わりに「6」の ように値を直接指定してみました。このようにすると、コンパイルはできる のですが、実行時にGetThemeColor()が失敗してしまいます。(hr != S_OK) 第2引数と第4引数の組み合わせによってエラーになったりならなかったりし ます。ただし、私がいろいろ試した限りでは、薄い青色が帰ってきません。Wi ndows7のツールバーの背景色である薄い青色は、どのような組み合わせをして いすればよいのでしょうか?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.