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

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)
MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变
3、在主程序中.h文件中添加消息函数:
afx_msg BOOL OnToolTipText(UINT, NMHDR *pTTTStruct, LRESULT *pResult);
MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变
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('\n'),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都对应上希望显示的提示信息即可

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

上一篇:我的第一个个人博客网站 -> wizzie.top


下一篇:iOS- 给App添加内购& 验证购买iOS7新特性