MFC Toolbar工具栏的Tooltip信息提示显示乱码的解决方法

动态创建工具栏并启用Tooltip的步骤可参考: MFC对话框中的工具栏、状态栏设计小结

然而,该方法的提示信息显示乱码,主要原因是程序启用unicode字符集,CString::GetBuffer函数返回LPTSTR,定义了Unicode宏的情况下为LPWSTR,奇怪的是在VS2010下就是有问题。

正确的做法是修改消息响应函数OnToolTipNotify部分的代码如下:

BOOL Cwar3Dlg::OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
{
    //TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
    NMTTDISPINFO *pTTT = (NMTTDISPINFO *) pNMHDR;
    UINT nID =pNMHDR->idFrom; //获取工具栏按钮ID
    if(nID)
    {
        nID = m_wndToolBar.CommandToIndex(nID); //根据ID获取按钮索引
        if(nID != -1)
        {
	        CString str;
            m_wndToolBar.GetButtonText(nID,str); //获取工具栏文本
            //pTTT->lpszText = str.GetBuffer(str.GetLength()); //该方式显示乱码。
	        pTTT->lpszText = (LPWSTR)(LPCTSTR)str; //设置提示信息文本
            pTTT->hinst = AfxGetResourceHandle();
            return(TRUE);
        }
    }
    return(FALSE);
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值