ツールチップの色が変わらない

[戻る]
fall 2014/12/13(土) 16:07:36
ダイアログでツールチップを表示させたいと思い
ツールチップを表示させるところまでは出来ました。

そして、そのツールチップの背景色を変更したいのですが
何故か色が変わってくれません。

下記コードで、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、ダイアログベース

蒼の洞窟 2014/12/15(月) 09:20:38
Windows7でテーマをクラッシックにしたら色が変わりました。
おそらく、テーマの描画が最優先になっているんじゃないですかね。

蒼の洞窟 2014/12/15(月) 09:53:13
一応、ツールチップのみテーマを無効にするという方法で行けなくもないですね。

// Xp以降のみという前提(←でないときはLoadLibrayを使う)

#include "UxTheme.h"
#pragma comment(lib, "UxTheme")


if (::IsThemeActive()) {
    ::SetWindowTheme(ToolTip.GetSafeHwnd(), _T(""), _T(""));
}

fall 2014/12/15(月) 23:33:36
[[解決]]
蒼の洞窟さん

回答ありがとうございます。
提示していただいた内容で解決できました。

::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

コモンコントロールの差異でツールチップに悪影響を及ぼしてそうなのですが・・・
# これを調べるのは少し大変そうなので、テストしていません。
# 参考資料としてだけ載せておきます。


直接的な原因が判明しておらず、いまいちすっきりしていませんが、
問題は解決できました。ありがとうございました。

古いスレッドには追加発言できません。