ダイアログでツールチップを表示させたいと思い
ツールチップを表示させるところまでは出来ました。
そして、そのツールチップの背景色を変更したいのですが
何故か色が変わってくれません。
下記コードで、XPでは色が変わってくれたのですが
Win7では薄いグレーっぽい背景色(デフォルト色?)に
なってしまいます。
また、不思議なことにWin7でも
プロジェクト設定でUnicode→MBCSに変更すると
背景色が変わりました
文字列を扱う上でUnicodeで作成したいのですが、
Win7+Unicodeでツールチップの背景色を変えるには
どうしたら良いでしょうか?
宜しくご教授お願いいたします。
==========================
●testDlg.h
CToolTipCtrl m_ToolTip;
●testClg.cpp
BOOL CtestDlg::OnInitDialog()
{
CDialog::OnInitdialog();
m_ToolTip.Create( this );
m_ToolTip.AddTool( this, _T(あいうえお) );
m_ToolTip.SetTipBkColor( RGB(0, 255, 0) );
m_ToolTip.Activate( TRUE );
return TRUE;
}
BOOL CtestDlg::PreTranslateMessage(MSG *pMsg)
{
if ( m_hWnd )
{
m_ToolTip.RelayEvent( pMsg );
}
return CDialog::PreTranslateMessage( pMsg );
}
参考にしたサイト:
http://home.att.ne.jp/banana/akatsuki/doc/mfc/mfc22/index.html
環境:MFC、ダイアログベース
Windows7でテーマをクラッシックにしたら色が変わりました。
おそらく、テーマの描画が最優先になっているんじゃないですかね。
一応、ツールチップのみテーマを無効にするという方法で行けなくもないですね。
// Xp以降のみという前提(←でないときはLoadLibrayを使う)
#include UxTheme.h
#pragma comment(lib, UxTheme)
if (::IsThemeActive()) {
::SetWindowTheme(ToolTip.GetSafeHwnd(), _T("), _T("));
}
蒼の洞窟さん
回答ありがとうございます。
提示していただいた内容で解決できました。
::SetWindowTheme( m_ToolTip, _T("), _T(") );
だと色が変わりましたが、
m_ToolTip.SetWindowTheme( _T(") );
だと駄目でした。
(メンバ変数は第二引数が無いのが問題なんでしょうか?)
もうちょっと私のほうでも調べてみたところ、
以下のサイトが見つかりました。
http://ameblo.jp/blueskyame/entry-10398978729.html
http://msdn.microsoft.com/ja-jp/library/ms997646.aspx
http://ztms.blog.fc2.com/blog-entry-35.html
コモンコントロールの差異でツールチップに悪影響を及ぼしてそうなのですが・・・
# これを調べるのは少し大変そうなので、テストしていません。
# 参考資料としてだけ載せておきます。
直接的な原因が判明しておらず、いまいちすっきりしていませんが、
問題は解決できました。ありがとうございました。