关于 CToolTipCtrl 在 CToolbar 上的使用

对于 对话框程序 或者 activex 控件开发的时候, toolbar 按钮的 PROMPT 属性不会自动作为按钮的tooltip显示。

对于这种情况,通常有一些其他的解决方案, 比如 加入TTN_NEEDTEXT 消息映射。

另外对于ACTIVEX 来说,TTN_NEEDTEXT这个消息似乎也未能触发。

有一种简单的方法就是创建一个 CToolTipCtrl, 然后挂接到 CToolBar上。

在 h文件中定义变量:

CToolBarCtrl m_tb;
CToolTipCtrl m_tip;

在cpp文件中 OnCreate 函数中

if (!m_tb.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  | CBRS_GRIPPER | CBRS_TOOLTIPS) || 
   !m_tb.LoadToolBar(IDR_MAINTOOLBAR))
    {
  TRACE0("Failed to create toolbar/n");
  return -1;      // fail to create
 }
 
 if(m_tip.Create(this)) {
  CRect toolButtonRect;
  CToolBarCtrl& toolBar = m_tb.GetToolBarCtrl();
  int buttonCount = toolBar.GetButtonCount();
  for (int i = 0; i < buttonCount; i ++) {
   TBBUTTON btn;
   if (toolBar.GetButton(i, &btn) && btn.fsStyle == TBSTYLE_BUTTON) {
    m_tb.GetItemRect(i, &toolButtonRect);
    m_tip.AddTool(&m_tb, btn.idCommand, toolButtonRect, btn.idCommand);
   } 
  }
  m_tb.GetToolBarCtrl().SetToolTips(&m_tip);
 } 

然后再更改ToolBar中每个按钮的 Prompt属性就可以作为tooltip显示了。
这种方法似乎比其他的方法好理解,也比较简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值