MFC单文档程序中给工具栏添加按钮提示时出错,该怎么改?

时间:2021-06-17 00:17:07
请大家看好,我说的是单文档程序,所以,在Oinitdialog()中添加.....之类的就不要说了,不胜感激,谢谢了。好,问题是:单文档程序中自己创建的Toolbar,代码如下:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
CString ToolBarString;
ToolBarString.LoadString(IDS_STRING107);//107:未能创建工具栏
if (!m_wndToolBar1.Create(this,  WS_CHILD | CBRS_TOP | CBRS_LEFT | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,ID_BUTTON32782) ||
!m_wndToolBar1.LoadToolBar(IDR_ROTATION)) // | WS_VISIBLE
{
TRACE0(ToolBarString);
return -1;  }    // 未能创建
}
工具栏有2个按钮,ID_ROTAIN_LEFT,ID_ROTAIN_RIGHT,给他们添加提示,我在网上找到了如下方法:
LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
    // TODO: 在此添加专用代码和/或调用基类
switch(message)
  
   case     WM_NOTIFY:
        switch(((LPNMHDR) lParam)->code)
        {
        case TTN_GETDISPINFO:
            {
                LPTOOLTIPTEXT lpttt;
                lpttt = (LPTOOLTIPTEXT) lParam;
               lpttt->hinst= AfxGetInstanceHandle();
                //lpttt->hinst= g_hinst;;
                UINT  id=lpttt->hdr.idFrom;
                switch(ID_RORATE_LEFT)  // 这里出错:原代码是switch(id),但是鼠标放到按钮没反应,
                {                    //我改为switch(ID_RORATE_LEFT) 后,两个按钮都显示“增加按钮”,该怎么修改一下?
                case ID_RORATE_LEFT:
                    lpttt->lpszText=TEXT("增加按钮");
                    break;
                 case ID_RORATE_RIGHT:
                    lpttt->lpszText=TEXT("减少按钮");
                    break;
}
                break;
             }
        default:
            break;
        }
return CFrameWnd::WindowProc(message, wParam, lParam);
 }

4 个解决方案

#1


出错在上面代码,自己先顶一下。 MFC单文档程序中给工具栏添加按钮提示时出错,该怎么改?

#2


MFC里这个类叫做CToolTipCtrl,具体用法很简单。
1、在类头文件中声明CToolTipCtrl的类对象m_ctrlTT。
2、在初始化函数OnInitDialog()中设置m_ctrlTT。
   EnableToolTips(TRUE);//enable use it
   m_ctrlTT.Create(this);
   m_ctrlTT.Activate(TRUE);
   m_ctrlTT.SetTipTextColor(RGB(0,0,255));//font color
   m_ctrlTT.SetDelayTime(150);//delay time
   //IDC_TEST为你想添加提示的控件IDC,"hello为想添加的提示语句"
   m_ctrlTT.AddTool(GetDlgItem(IDC_TEST),(LPCTSTR)"hello");
3、在ClassWizard里添加PreTranslateMessage消息函数,并添加如下语句。
   m_ctrlTT.RelayEvent(pMsg);

#3


引用 2 楼 xinhaoda 的回复:
MFC里这个类叫做CToolTipCtrl,具体用法很简单。
1、在类头文件中声明CToolTipCtrl的类对象m_ctrlTT。
2、在初始化函数OnInitDialog()中设置m_ctrlTT。
   EnableToolTips(TRUE);//enable use it
   m_ctrlTT.Create(this);
   m_ctrlTT.Activate(TRUE);
   m_ctrlTT.SetTipTextColor(RGB(0,0,255));//font color
   m_ctrlTT.SetDelayTime(150);//delay time
   //IDC_TEST为你想添加提示的控件IDC,"hello为想添加的提示语句"
   m_ctrlTT.AddTool(GetDlgItem(IDC_TEST),(LPCTSTR)"hello");
3、在ClassWizard里添加PreTranslateMessage消息函数,并添加如下语句。
   m_ctrlTT.RelayEvent(pMsg);
这种方法是在控件中添加提示的吧

#4


MFC里这个类叫做CToolTipCtrl,具体用法很简单。
1、在类头文件中声明CToolTipCtrl的类对象m_ctrlTT。
2、在初始化函数OnInitDialog()中设置m_ctrlTT。
   EnableToolTips(TRUE);//enable use it
   m_ctrlTT.Create(this);
   m_ctrlTT.Activate(TRUE);
   m_ctrlTT.SetTipTextColor(RGB(0,0,255));//font color
   m_ctrlTT.SetDelayTime(150);//delay time
   //IDC_TEST为你想添加提示的控件IDC,"hello为想添加的提示语句"
   m_ctrlTT.AddTool(GetDlgItem(IDC_TEST),(LPCTSTR)"hello");
3、在ClassWizard里添加PreTranslateMessage消息函数,并添加如下语句。
   m_ctrlTT.RelayEvent(pMsg); MFC单文档程序中给工具栏添加按钮提示时出错,该怎么改?

#1


出错在上面代码,自己先顶一下。 MFC单文档程序中给工具栏添加按钮提示时出错,该怎么改?

#2


MFC里这个类叫做CToolTipCtrl,具体用法很简单。
1、在类头文件中声明CToolTipCtrl的类对象m_ctrlTT。
2、在初始化函数OnInitDialog()中设置m_ctrlTT。
   EnableToolTips(TRUE);//enable use it
   m_ctrlTT.Create(this);
   m_ctrlTT.Activate(TRUE);
   m_ctrlTT.SetTipTextColor(RGB(0,0,255));//font color
   m_ctrlTT.SetDelayTime(150);//delay time
   //IDC_TEST为你想添加提示的控件IDC,"hello为想添加的提示语句"
   m_ctrlTT.AddTool(GetDlgItem(IDC_TEST),(LPCTSTR)"hello");
3、在ClassWizard里添加PreTranslateMessage消息函数,并添加如下语句。
   m_ctrlTT.RelayEvent(pMsg);

#3


引用 2 楼 xinhaoda 的回复:
MFC里这个类叫做CToolTipCtrl,具体用法很简单。
1、在类头文件中声明CToolTipCtrl的类对象m_ctrlTT。
2、在初始化函数OnInitDialog()中设置m_ctrlTT。
   EnableToolTips(TRUE);//enable use it
   m_ctrlTT.Create(this);
   m_ctrlTT.Activate(TRUE);
   m_ctrlTT.SetTipTextColor(RGB(0,0,255));//font color
   m_ctrlTT.SetDelayTime(150);//delay time
   //IDC_TEST为你想添加提示的控件IDC,"hello为想添加的提示语句"
   m_ctrlTT.AddTool(GetDlgItem(IDC_TEST),(LPCTSTR)"hello");
3、在ClassWizard里添加PreTranslateMessage消息函数,并添加如下语句。
   m_ctrlTT.RelayEvent(pMsg);
这种方法是在控件中添加提示的吧

#4


MFC里这个类叫做CToolTipCtrl,具体用法很简单。
1、在类头文件中声明CToolTipCtrl的类对象m_ctrlTT。
2、在初始化函数OnInitDialog()中设置m_ctrlTT。
   EnableToolTips(TRUE);//enable use it
   m_ctrlTT.Create(this);
   m_ctrlTT.Activate(TRUE);
   m_ctrlTT.SetTipTextColor(RGB(0,0,255));//font color
   m_ctrlTT.SetDelayTime(150);//delay time
   //IDC_TEST为你想添加提示的控件IDC,"hello为想添加的提示语句"
   m_ctrlTT.AddTool(GetDlgItem(IDC_TEST),(LPCTSTR)"hello");
3、在ClassWizard里添加PreTranslateMessage消息函数,并添加如下语句。
   m_ctrlTT.RelayEvent(pMsg); MFC单文档程序中给工具栏添加按钮提示时出错,该怎么改?