高分:在线等:如何让CToolBarCtrl具有ToolTip

dht_yunx 2003-01-18 03:58:15
我怎么设CToolBarCtrl的Style 和 TBBUTTON的Style 都不行啊?
请高手帮忙了...
...全文
69 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
demetry 2003-02-23
  • 打赏
  • 举报
回复
试一试 vickowang(你的影子无所不在...)
myheartwillgoon 2003-02-15
  • 打赏
  • 举报
回复
1.我在MainFrame下OnCreate()
CToolBarCtrl *wndVToolBar;
wndVToolBar=&(m_wndBar.GetToolBarCtrl());
m_tips=(wndVToolBar->GetToolTips());
m_tips->AddTool()
m_tips->Activate(true);
可是还是出不来ToolTip(前提:我去掉了m_wndBar的CBRS_TOOLTIPS属性。)//


2.自己加上CToolTipCtrl可是无法addtool????
if (m_tips->Create(this))
{
CWnd* pW=GetDlgItem(ID_TOOLBAR_ITEM1);//得到窗口指针
ASSERT(pW!=NULL);
m_tips.AddTool(pW,"1111111111");
}

请执教
dht_yunx 2003-01-20
  • 打赏
  • 举报
回复
弄个ToolTip要这么复杂啊!
:) 能不能简单一点
mymmsc 2003-01-18
  • 打赏
  • 举报
回复
我来学习一下
vickowang 2003-01-18
  • 打赏
  • 举报
回复
我是在对话框中实现的,通过消息处理,代码如下:
1、首先用ON_NOTIFY_EX_RANGE宏绑定消息处理函数,这个宏的含义可以参考
MSDN上的说明
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnTooltips)
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnTooltips)
END_MESSAGE_MAP()
2、然后在消息处理函数中写代码
void CMyDialog::OnTooltips(UINT nID, NMHDR * pNotifyStruct, LRESULT * lResult)
{
CString strToolTip = NeedText(nID, pNotifyStruct, lResult);
LPTOOLTIPTEXTW lpTTTW = (LPTOOLTIPTEXTW)pNotifyStruct;
LPTOOLTIPTEXTA lpTTTA = (LPTOOLTIPTEXTA)pNotifyStruct;

#ifndef _UNICODE
if (pNotifyStruct->code == TTN_NEEDTEXTA)
lstrcpyn(lpTTTA->szText, strToolTip, strToolTip.GetLength() + 1);
else
_mbstowcsz(lpTTTW->szText, strToolTip, strToolTip.GetLength() + 1);
#else
if (pNotifyStruct->code == TTN_NEEDTEXTA)
_wcstombsz(lpTTTA->szText, strToolTip, strToolTip.GetLength() + 1);
else
lstrcpyn(lpTTTW->szText, strToolTip, strToolTip.GetLength() + 1);
#endif

}

CString CReportPreviewDlg::NeedText(UINT nID, NMHDR * pNotifyStruct, LRESULT * lResult )
{
LPTOOLTIPTEXT lpTTT = (LPTOOLTIPTEXT)pNotifyStruct ;

CString strToolTip;
//ID_MOVEFIRST_BTN到ID_GRIDPROP_BTN是ToolBar上的一堆连续的按钮的资源
//ID,因为ON_NOTIFY_EX_RANGE宏是绑定一堆连续的窗口ID的。
if ((lpTTT->hdr.idFrom < ID_MOVEFIRST_BTN) || (lpTTT->hdr.idFrom > ID_GRIDPROP_BTN))
{
strToolTip="";
}
else
{
strToolTip.LoadString(lpTTT->hdr.idFrom);
// szText length is 80
int nLength = (strToolTip.GetLength() > 79) ? 79 : strToolTip.GetLength();

strToolTip = strToolTip.Left(nLength);
}
return strToolTip;
}

3、以上代码是经验证有效。
dht_yunx 2003-01-18
  • 打赏
  • 举报
回复
我动态创建一个CToolBarCtrl,这样如何用CToolTipCtrl::AddTool
dht_yunx 2003-01-18
  • 打赏
  • 举报
回复
难道非要用CToolTipCtrl
sunyuan_01 2003-01-18
  • 打赏
  • 举报
回复
如果是在对话框或基于CWnd的框架中用这就行了
CToolBarCtrl::GetToolTips ()
否则要自己加CToolTipCtrl

15,979

社区成员

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

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