MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变

摘要:
1.将工具栏资源添加到ResourceView并命名为IDR_TOOLBAR12.在中添加变量CToolBarm。主程序工具栏的h文件;CImageListimg;3.在主程序BEGIN的h文件_ MESSAGE_MAP(CDetectorDlg,CDialog)函数中:ON_ NOTIFY_EX(TTN_NEETEXT,0,OnToolT

1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1
2、在主程序的.h文件中加入变量:
          CToolBar m_toolbar;CImageList img;
3、在主程序中.h文件中的BEGIN_MESSAGE_MAP(CDetectorDlg,CDialog)函数中加入:
        ON_NOTIFY_EX( TTN_NEEDTEXT,0,OnToolTipText)
1
3、在主程序中.h文件中添加消息函数:
afx_msg BOOL OnToolTipText(UINT, NMHDR *pTTTStruct, LRESULT *pResult);
2
4、创建一个Toolbar工具   详见《MFC 学习之 工具栏》

5.在主程序的.cpp文件中编译函数OnToolTipText//使工具栏显示提示信息

 
BOOL CDormDlg::OnToolTipText(UINT, NMHDR *pTTTStruct, LRESULT *pResult)
{
    ASSERT(pTTTStruct->code == TTN_NEEDTEXTA || pTTTStruct->code == TTN_NEEDTEXTW);
    
    //UNICODE消息
    TOOLTIPTEXTA *pTTA=(TOOLTIPTEXT*)pTTTStruct;
    TOOLTIPTEXTW *pTTW=(TOOLTIPTEXTW*)pTTTStruct;
 
    CString strTipText,strStatus;
    UINT nID = pTTTStruct->idFrom;     
    
    if(pTTTStruct->code == TTN_NEEDTEXTA &&(pTTA->uFlags & TTF_IDISHWND) ||
        pTTTStruct->code ==TTN_NEEDTEXTW &&(pTTW->uFlags & TTF_IDISHWND))
    {
        //strStatus.Format("%d",1);
        nID = ::GetDlgCtrlID((HWND)nID);
        
    }
 
    if(nID != 0)//不为分隔符
    {
    //    AfxMessageBox("1111111111");
        strTipText.LoadString(nID);
        strTipText = strTipText.Mid(strTipText.Find(_T('
'),0)+1);
        
#ifndef _UNICODE
        if (pTTTStruct->code == TTN_NEEDTEXTA)
        {
            lstrcpyn(pTTA->szText,strTipText,sizeof(pTTA->szText));    
            //AfxMessageBox(pTTA->szText);
            m_bar.SetPaneText(0,pTTA->szText);
        } 
        else
        {            
            _mbstowcsz(pTTW->szText,strTipText,sizeof(pTTW->szText));
            //m_bar.SetPaneText(0,"就绪");
        }
#else
        if(pTTTStruct->code == TTN_NEEDTEXTA)
        {
            _wcstombsz(pTTA->szText,strTipText,sizeof(pTTA->szText))    ;
            m_bar.SetPaneText(0,pTTA->szText);
        }
        else
        {
            lstrcpyn(pTTW->szText,strTipText,sizeof(pTTW->szText));
            m_bar.SetPaneText(0,"就绪");
        }
 
#endif
        *pResult = 0;
        ::SetWindowPos(pTTTStruct->hwndFrom,HWND_TOP,0,0,0,0,SWP_NOACTIVATE |
            SWP_NOSIZE |SWP_NOMOVE |SWP_NOOWNERZORDER);
        //m_bar.SetPaneText(0,"就绪");
        return TRUE;
    }
    
    return TRUE;
}

6.在ResourceView的String资源里,将工具栏中每个按钮的ID都对应上希望显示的提示信息即可

3
7、效果图4

免责声明:文章转载自《MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Git 服务器搭建前端重点题目汇总下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C++ MFC学习 (六)

   由于微软在VS2013 及之后不建议再使用 C/C++ 的传统库函数   scanf,strcpy,sprintf 等,所以直接使用这些库函数会提示 C4996 错误   VS建议采用带 _S的函数,如: scanf_s, strcpy_s , 但这些不是标准 C/C++ 函数。要想继续使用此函数,需要添加  _CRT_SECURE_NO_WARNI...

VC++ MFC中如何将应用程序的配置信息保存到注册表中(一)

  注册表(Registry,繁体中文版Windows称之为登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。比如我们打开一个记事本,调整其窗口大小,使用完毕后关闭记事本,下次打开时大小和上次关闭前的大小和在屏幕上的位置是相同。这些位置和大小信息就是在记事本关闭时保存到注册表中,下次打开时我们从注册表中取出...

【转】VC 模式对话框和非模式对话框的创建,销毁和区别

原文网址:http://blog.csdn.net/mycaibo/article/details/6002151 VC 模式对话框和非模式对话框的创建,销毁和区别  在WIN32中,模式对话框的创建一般是使用DialogBox来进行创建的。而非模式对话框则是利用CreateWindow来创建的。在MFC或是WTL中,模式对话框一般是使用DoModal,...

Toolbar 工具栏 菜单 标题栏 Menu

要使用Toolbar,要先将标题栏(ActionBar)关掉; style.xml中:<style name="MainActivityTheme" parent="Theme.AppCompat.Light.NoActionBar"/>AndroidManifest.xml中:<activity android:name=".MainA...

转载:MFC之MessageBox、AfxMessageBox用法

在软件中我们经常会弹出个小窗口,给一点点提示.这就会用到消息对话框. 在Win32 API程序中只有MessageBox这一种用法. 而在MFC中就有三各方法: 1.调用API中的MessageBox; 2.调用CWnd的成员函数MessageBox; 3.调用全局函数AfxMessageBox; MFC中MessageBox的用法 一...

MFC上下浮动与渐入渐出消息提示框实现

类似QQ与360软件,消息提示有两种。上下浮动、渐入渐出。 1、上下浮动提示框实现 机制,定时器响应上下浮动消息。 主要API:MoveWindow。 源码如下UpDownTipDlg.h、UpDownTipDlg.cpp。 UpDownTipDlg.h [cpp] view plaincopy /*  *@brief 上下浮动提示框  *@...