CToolTipCtrl使用

2131 ワード

CToolTipCtrl使用
TooltipはWin 32の一般的なコントロールであり、MFCではCToolTipCtrlクラスが生成されている.総じてその使用方法は簡単である.以下、その一般的な使い方と高度な使い方について説明する.
一般的な使用方法手順:
  • CToolTipCtrlメンバー変数m_を追加tt.
  • 親ウィンドウでEnableTooltips(TRUE)を呼び出す.
  • ウィンドウのOnCreate(または他の適切な場所)にTipを表示するサブウィンドウをtooltipに追加し、対応する表示文字列CToolTipCtrl::AddTool(pWnd、string to display)を指定します.
  • 親ウィンドウのBOOL PreTranslateMessage(MSG*pMsg)をリロードし、関数でm_を呼び出します.tt.RelayEvent(pMsg).

  • 次に、ウィンドウCWndYourでCToolTipCtrlを使用すると仮定する


    class CWndYour:xxx
    {
    CToolTipCtrl m_tt;
    }

    OnCreate Tip
    CWndYour::OnCreate(....)
    {
    EnableToolTips(TRUE);
    m_tt.Create(this);
    m_tt.Activate(TRUE);
    CWnd* pW=GetDlgItem(IDC_CHECK1);//
    m_tooltip.AddTool(pW,"Check1");//
    ........

    }

    BOOL PreTranslateMessage(MSG* pMsg)
    BOOL CWndYour::PreTranslateMessage(MSG* pMsg)
    {
    {
    m_tt.RelayEvent(pMsg);
    }
    return CParentClass::PreTranslateMessage(pMsg);
    }

    これにより、マウスが対応するサブウィンドウに移動すると、対応するTooltipが表示されます.
    Tooltipの表示内容を動的に変更する方法と手順:
  • 上記の1、2、4ステップ.
  • Tooltipを追加するときに表示される文字列を指定せず、LPSTR_を使用するTEXTCALLBACK.
  • ウィンドウにメッセージマッピングON_を追加NOTIFY_EX( TTN_NEEDTEXT, 0, SetTipText ).
  • ウィンドウには、BOOL SetTipText(UINT id,NMHDR*pTTTStruct,LRESULT*pResult)としてモデル化された表示コンテンツを動的に提供するための関数が追加され、以下のコードは、入力されたパラメータに基づいて表示すべきコンテンツを判定することができる.
  • 
    				BOOL CWndYour::SetTipText( UINT id, NMHDR * pTTTStruct, LRESULT * pResult )
    {
    TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pTTTStruct;
    UINT nID =pTTTStruct->idFrom; // ID, HWND
    if (pTTT->uFlags & TTF_IDISHWND) // nID HWND
    {
    nID = ::GetDlgCtrlID((HWND)nID);// HWND ID , HWND
    switch(nID)
    case(IDC_YOUR_CONTROL1)
    strcpy(pTTT->lpszText,your_string1);//
    return TRUE;
    break;
    case(IDC_YOUR_CONTROL2)
    //
    return TRUE;
    break;
    }
    return(FALSE);
    }