ツールチップの色が変わらない – プログラミング – Home

ツールチップの色が変わらない
 
通知
すべてクリア

[解決済] ツールチップの色が変わらない


fall
 fall
(@fall)
ゲスト
結合: 10年前
投稿: 2
Topic starter  

ダイアログでツールチップを表示させたいと思い
ツールチップを表示させるところまでは出来ました。

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

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


引用未解決
トピックタグ
蒼の洞窟
 蒼の洞窟
(@蒼の洞窟)
ゲスト
結合: 12年前
投稿: 28
 

Windows7でテーマをクラッシックにしたら色が変わりました。
おそらく、テーマの描画が最優先になっているんじゃないですかね。


返信引用
蒼の洞窟
 蒼の洞窟
(@蒼の洞窟)
ゲスト
結合: 12年前
投稿: 28
 

一応、ツールチップのみテーマを無効にするという方法で行けなくもないですね。

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

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

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


返信引用
fall
 fall
(@fall)
ゲスト
結合: 10年前
投稿: 2
Topic starter  

蒼の洞窟さん

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

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

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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