CToolTipCtrl的提示信息无法换行?

jxb_memory 2017-01-08 02:58:20
代码如下:
	m_toolTipCtrl.Create(this, TTS_BALLOON | TTS_ALWAYSTIP | TTS_CLOSE | TTS_NOFADE);
m_toolTipCtrl.SetMaxTipWidth(600);
m_toolTipCtrl.SetDelayTime(2000);
m_toolTipCtrl.AddTool(this, _T("测试\r\n你好"));
m_toolTipCtrl.Activate(TRUE);

按照网上的说法只要加上m_toolTipCtrl.SetMaxTipWidth(600);那么\r\n就可以实现强制换行了,但是实际情况是依然无法换行?谁知道为什么?到底CToolTipCtrl能不能实现换行?我是否要更换工具提示类?
...全文
184 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxb_memory 2017-01-08
  • 打赏
  • 举报
回复
终于弄明白了,其实网上的SetMaxTipWidth(600);和一楼的SendMessage方法差不多,都是可用的。但是在我这里都不起作用,原因就是我的界面传入的字符串中的“\r\n”就是ACSII的“5c 00 72 00 5c 00 6e 00”而不是实际的回车和换行应该的“0d 00 0a 00”,所以就导致了我的问题出现,进行转换后就可以了。
jxb_memory 2017-01-08
  • 打赏
  • 举报
回复
收到,我测试一下,先谢了!
schlafenhamster 2017-01-08
  • 打赏
  • 举报
回复

BOOL CSDItooltipView::OnToolTipText( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
{
	// need to handle both ANSI and UNICODE versions of the message
static BOOL first=TRUE;
	if(first)
	{
		first=FALSE;
		_AFX_THREAD_STATE* pThreadState = AfxGetThreadState();
		CToolTipCtrl* pToolTip = pThreadState->m_pToolTip;
		if(pToolTip)
		{
			pToolTip->SetTipBkColor(RGB(0,0,255));// blue
			pToolTip->SetTipTextColor(RGB(255,255,255));//white
			pToolTip->SendMessage(TTM_SETMAXTIPWIDTH,0,SHRT_MAX);// 32767
		}
	}

	TOOLTIPTEXTA* pTTT = (TOOLTIPTEXT*)pNMHDR;
	CString strTipText;
	UINT nID = pNMHDR->idFrom;
	strTipText.Format("Work A\r\nID=%d",nID);
//
	lstrcpyn(pTTT->szText, strTipText, 80);
	*pResult = 0;
//
	return TRUE;    
}

schlafenhamster 2017-01-08
  • 打赏
  • 举报
回复
SendMessage(hwndTT,TTM_SETMAXWIDTH,0,SHRT_MAX);// 32767

15,979

社区成员

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

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