リストボックスコントロール2008年6月29日午後05時13分を促し書き込み

MFCでは、ほぼすべてのコントロールには、プロンプトの情報を持っているが、我々はリストボックスコントロールの上にマウス、クリトリスは非常にああ落胆されていないされていないので、私は特に、今日書いたときにのみリストボックスには、このような特徴を持っていませんその効果を達成するために、リストボックスコントロールの簡単な示唆に富みます。

       アイデアは単純です:それを踏襲し、我々は最初のリストボックスコントロールを継承し、その後(情報の表示キャリア)で独自のMyListBoxという中でのCToolTipCtrl制御を追加するために、独自のMyListBoxというの構築ので、我々はのCToolTipCtrlコントロールを作成するためのインタフェースを提供する必要があり、コントロールが後に作成されます。それは、我々は、マウスを移動すると、それがマウスの位置の変化であり、異なるコンテンツを表示するので、マウス移動イベント、情報のセットを必要とし、インターフェイス情報のセットが必要である。ときにマウスが移動コードは以下の通りである:コードは、cppのファイルを一覧表示します

BOOL CTipListBox :: CreateToolTip()
{
    IF(NULL == m_toolTipMessage)
    {
        m_toolTipMessage =新規のCToolTipCtrl()。
        もし(m_toolTipMessage->を作成します(この、TTS_ALWAYSTIP | TTS_NOPREFIX))
        {
            m_toolTipMessage->アクティブ(TRUE);
            m_toolTipMessage-> SetDelayTime(100)。
            m_toolTipMessage-> SetMaxTipWidth(500)。
            m_toolTipMessage-> AddTool(この); //帮定控件ツールチップ

            TRUEを返します。
        }
    }
    FALSEを返します。
}

ボイドCTipListBox :: SetTipMessage(CStringの&メッセージ)
{
    IF(message.IsEmpty())
    {
        返します。
    }

    IF(!m_toolTipMessage-> GetSafeHwnd()= NULL)
    {
        m_toolTipMessage-> UpdateTipText(メッセージ、この)。//更新要显示的字符     
    }
    他
    {
        IF(CreateToolTip())
        {
            m_toolTipMessage-> AddTool(このメッセージ)。
        }
    }

    m_toolTipMessage->アクティブ(TRUE);
}

:: CTipListBox ONMOUSEMOVEボイド(UINT nFlags、CPointポイント)
{
    CPoint白金; //現在のマウス位置の
    GetCursorPos(&Pt)から、
    一方ScreenToClient(&白金); //クライアント領域座標に

    CRect四角形、コントロールの//サイズ
    GetClientRect(&RECT);
    BOOL INOUT;
    CStringのメッセージ。

    IF(rect.PtInRect(PT))
    {
        int型SELECT = ItemFromPoint(白金、INOUT); //マウスの情報が一つである
        GetTextは(SELECT、メッセージ);
        SetTipMessage(メッセージ);
    }
}

BOOL CTipListBox ::のPreTranslateMessage(MSG * pMsgを)
{
    IF(!m_toolTipMessage-> GetSafeHwnd()= NULL)
    {
        IF(pMsg->メッセージ== WM_MOUSEMOVE)
        {
            m_toolTipMessage-> RelayEvent(pMsgを)。
            SendMessage(WM_MOUSEMOVE)。
        }
    }

    返すのCWnd :: PreTranslateMessageの(pMsgを);
}

おすすめ

転載: www.cnblogs.com/lu-ping-yin/p/10988719.html