为工具栏添加提示

来源:互联网 发布:php蜘蛛池搭建教程 编辑:程序博客网 时间:2024/05/18 12:37

三、为工具栏添加工具提示

[3.1] 在CDlgMenuToolbarDlg类定义中手工添加消息映射函数的定义,如下黑体部分

  //{{AFX_MSG(CDlgMenuToolbarDlg)virtual BOOL OnInitDialog();afx_msg void OnPaint();afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);//}}AFX_MSGDECLARE_MESSAGE_MAP()


[3.2] 在CDlgMenuToolbarDlg.cpp添加函数的实现代码

//工具栏提示BOOL CDlgMenuToolbarDlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult){ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);// UNICODE消息TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;//TCHAR szFullText[512];CString strTipText;UINT nID = pNMHDR->idFrom;if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND)){// idFrom为工具条的HWND nID = ::GetDlgCtrlID((HWND)nID);}if (nID != 0) //不为分隔符{strTipText.LoadString(nID);strTipText = strTipText.Mid(strTipText.Find(''\n'',0)+1);#ifndef _UNICODEif (pNMHDR->code == TTN_NEEDTEXTA){lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText));}else{_mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText));}#elseif (pNMHDR->code == TTN_NEEDTEXTA){_wcstombsz(pTTTA->szText, strTipText,sizeof(pTTTA->szText));}else{lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));}#endif*pResult = 0;// 使工具条提示窗口在最上面::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER); return TRUE;}return TRUE;}

[3.3] 在CDlgMenuToolbarDlg.cpp中添加消息映射,请看如下代码中的黑体部分

BEGIN_MESSAGE_MAP(CDlgMenuToolbarDlg, CDialog)//{{AFX_MSG_MAP(CDlgMenuToolbarDlg)ON_WM_PAINT()ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText )//}}AFX_MSG_MAPEND_MESSAGE_MAP()
原创粉丝点击