调用CToolTipCtrl ::SetTipBkColor设置背景色成功,却不显示设置的背景色

Dragon___Knight 2013-08-30 12:59:36
CToolTipCtrl  m_toolTip;

m_toolTip.Create(this,TTS_ALWAYSTIP );
m_toolTip.Activate(true);
m_toolTip.SetMaxTipWidth(100);
m_toolTip.AddTool(GetDlgItem(IDC_FORWARD), _T("快进"));
m_toolTip.SetTipBkColor(RGB(0,0,0));
m_toolTip.SetTipTextColor(RGB(255,0,0));


cor=m_toolTip.GetTipBkColor();
int r=GetRValue(cor);
int g=GetGValue(cor);
int b=GetBValue(cor);

cor=m_toolTip.GetTipTextColor();
r=GetRValue(cor);
g=GetGValue(cor);
b=GetBValue(cor);

Get函数得出color和Set的是一样的,说明设置成功了的呀,但为什么提示框还是白色背景、黑体字呢?
...全文
432 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
soundbird 2014-10-11
  • 打赏
  • 举报
回复
我也遇到这个状况,难道没有解决之道?
maomao85 2014-05-29
  • 打赏
  • 举报
回复
引用 12 楼 Dragon___Knight 的回复:
已找到原因所在,是风格问题,我的stdafx.h文件中有这段代码: #ifdef _UNICODE #if defined _M_IX86 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_IA64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_X64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") #else #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") #endif #endif 注释掉这段代码就能设置背景色和问本色,但是我的自绘进度条这些出现了边框,并且tooltips的形状不是我想要的圆角矩形,我现在想要的效果是tooltips可设置背景色、文本色又是圆角矩形,同时也不会使其他窗体出现边框。我该怎么办,求高手指点迷津
我也遇到这个问题,是不是在unicode环境下失效,多字符集就是可以成功显示颜色的?为什么啊?
向立天 2013-10-07
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
Dragon___Knight 2013-09-05
  • 打赏
  • 举报
回复
已找到原因所在,是风格问题,我的stdafx.h文件中有这段代码: #ifdef _UNICODE #if defined _M_IX86 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_IA64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_X64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") #else #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") #endif #endif 注释掉这段代码就能设置背景色和问本色,但是我的自绘进度条这些出现了边框,并且tooltips的形状不是我想要的圆角矩形,我现在想要的效果是tooltips可设置背景色、文本色又是圆角矩形,同时也不会使其他窗体出现边框。我该怎么办,求高手指点迷津
Dragon___Knight 2013-08-30
  • 打赏
  • 举报
回复
引用 9 楼 VisualEleven 的回复:
难道和系统有关系????我是在WinXP上测试的
是不是开发环境的问题呢?我用的VS2005。
Dragon___Knight 2013-08-30
  • 打赏
  • 举报
回复
引用 9 楼 VisualEleven 的回复:
难道和系统有关系????我是在WinXP上测试的
这就不知道了哦。我用的win7。这还真是麻烦
Eleven 2013-08-30
  • 打赏
  • 举报
回复
难道和系统有关系????我是在WinXP上测试的
Dragon___Knight 2013-08-30
  • 打赏
  • 举报
回复
CToolTipCtrl  m_toolTip;


BOOL CtesttooltipDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标

// TODO: 在此添加额外的初始化代码
m_toolTip.Create(this,TTS_ALWAYSTIP );
m_toolTip.Activate(true);
m_toolTip.SetMaxTipWidth(100);
m_toolTip.AddTool(GetDlgItem(IDC_BUTTON1), _T("快进"));
m_toolTip.SetTipBkColor(RGB(0,0,0));
m_toolTip.SetTipTextColor(RGB(255,0,0));



return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}


BOOL CtesttooltipDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类

/*if (pMsg->message == WM_MOUSEMOVE || pMsg->message == WM_LBUTTONDOWN || pMsg->message == WM_LBUTTONUP)
m_toolTip.RelayEvent(pMsg);*/

if(m_toolTip.m_hWnd)
{
m_toolTip.RelayEvent(pMsg);
}

return CDialog::PreTranslateMessage(pMsg);
}



Dragon___Knight 2013-08-30
  • 打赏
  • 举报
回复
引用 5 楼 VisualEleven 的回复:
[quote=引用 4 楼 Dragon___Knight 的回复:] 2楼,PreTranslateMessage这个我肯定是加了的,不然,提示框是显示不出来的。
[/quote] 这就奇怪了,为什么你的显示出来了 我的显示不出来。
Dragon___Knight 2013-08-30
  • 打赏
  • 举报
回复
现在的问题是,背景色、文本色,设置了,却没起作用
Eleven 2013-08-30
  • 打赏
  • 举报
回复
引用 4 楼 Dragon___Knight 的回复:
2楼,PreTranslateMessage这个我肯定是加了的,不然,提示框是显示不出来的。

Dragon___Knight 2013-08-30
  • 打赏
  • 举报
回复
2楼,PreTranslateMessage这个我肯定是加了的,不然,提示框是显示不出来的。
Dragon___Knight 2013-08-30
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
CToolTipCtrl::Update 刷新下试试看 也可能 CToolTipCtrl 在系统中已经被重写美化了, 设置的颜色没有用, 开源的ToolTipCtrl控件很多
update是试过的,没用
Eleven 2013-08-30
  • 打赏
  • 举报
回复

CToolTipCtrl  m_toolTip; // 成员函数


BOOL CXXXXDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
   // ...
	m_toolTip.Create(this,TTS_ALWAYSTIP);//创建一个CToolTipCtrl对象
	m_toolTip.Activate(true);
	m_toolTip.SetMaxTipWidth(100);
	m_toolTip.AddTool(this, _T("快进"));
	m_toolTip.SetTipBkColor(RGB(0,0,0));
	m_toolTip.SetTipTextColor(RGB(255,0,0));

	return TRUE;  // return TRUE  unless you set the focus to a control
}

BOOL CXXXXDlg::PreTranslateMessage(MSG* pMsg)
{
	if(m_toolTip.m_hWnd)
	{
		m_toolTip.RelayEvent(pMsg);
	}
	return CDialog::PreTranslateMessage(pMsg);
}
zgl7903 2013-08-30
  • 打赏
  • 举报
回复
CToolTipCtrl::Update 刷新下试试看 也可能 CToolTipCtrl 在系统中已经被重写美化了, 设置的颜色没有用, 开源的ToolTipCtrl控件很多

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧