定制工具条的状态信息与提示信息

翻译|其它|编辑:郝浩|2006-06-15 14:35:00.000|阅读 1446 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


缺省的MFC使用与ID相同的字符串资源作为工具条按钮的状态信息与提示信息。

有此些时侯我们需要在程序运行时改变这些信息,这仅需要少量的工作,
下面的应用是针对MDI的。

首先,定制状态条信息,为些你必须为CMDIFrameWnd重载GetMessageString函数。下面是一个示例。

void CMainFrame::GetMessageString(UINT nID, CString& rMessage) const
{
    // load appropriate string
    if(!m_bCustomMessage) {
        CFrameWnd::GetMessageString(nID, rMessage);
    return;
}

switch(nID) {
    case ID_LOOK_UP:
        rMessage = _T("Look out");
    break;
    case ID_LOOK_DOWN:
        rMessage = _T("Look down");
    break;
        default:
    CFrameWnd::GetMessageString(nID, rMessage);
   }
}

其次:修改提示按钮,为们必需截取CMDIChildFrame的消息TTN_NEEDTEXTW与TTN_NEEDTEXTA。


BEGIN_MESSAGE_MAP(CMyChildFrame, CMDIChildWnd)
//{{AFX_MSG_MAP(CNetbasChildFrame)
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText)
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyChildFrame message handlers

BOOL CMyChildFrame::GetToolText( UINT nID, CString& strTipText )
{
    switch(nID) {
        case ID_LOOK_UP:
            strTipText = _T("Tip out");
        return TRUE;
        case ID_LOOK_DOWN:
            strTipText = _T("Tip down");
        return TRUE;
      }
   return FALSE;
}

#define _countof(array) (sizeof(array)/sizeof(array[0]))

BOOL CMyChildFrame::OnToolTipText(UINT nID, NMHDR* pNMHDR,
LRESULT*pResult)
{
    ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);

    TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
    TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;

    CString strTipText;
    if ( GetToolText( pNMHDR->idFrom, strTipText ) )
    {
        #ifndef _UNICODE
        if (pNMHDR->code == TTN_NEEDTEXTA)
            lstrcpyn(pTTTA->szText, strTipText, _countof(pTTTA->szText));
        else
            _mbstowcsz(pTTTW->szText, strTipText, _countof(pTTTW->szText));
        #else
        if (pNMHDR->code == TTN_NEEDTEXTA)
            _wcstombsz(pTTTA->szText, strTipText, _countof(pTTTA->szText));
        else
            lstrcpyn(pTTTW->szText, strTipText, _countof(pTTTW->szText));
        #endif
        return TRUE;
    }

   return CMDIChildWnd::OnToolTipText( nID, pNMHDR, pResult );
}
 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP