[kaze's test] プログラミングメモ →目次

 


コントロールにチップをつける(VC++)

ダイアログに貼り付けられているコントロールにマウスカーソルを動かすと、ツールチップを表示させる方法のメモです。MFCにあるCToolTipCtrlクラスを使います。



1.ダイアログクラスにCToolTipCtrlクラス型のメンバー変数を追加します。

class CChipTestDlg : public CDialog
{
// 構築
public:
    CChipTestDlg(CWnd* pParent = NULL);    // 標準のコンストラクタ
    CToolTipCtrl m_toolTip;
... ...
};

2.OnInitDialog()関数の中で、m_toolTipのウィンドウズ本体を作成して、チップをつけようとするコントロールをm_toolTipに登録します。

BOOL CChipTestDlg::OnInitDialog()
{
... ...
    CDialog::OnInitDialog();
    m_toolTip.Create(this,TTS_ALWAYSTIP);
    m_toolTip.AddTool(GetDlgItem(IDC_BUTTON1), "It is button1 ...");
    m_toolTip.AddTool(GetDlgItem(IDC_CHECK1), "It is Check1 ...");
... ...
    return TRUE;
}

3.チップを表示する為に、WM_MOUSEMOVEというメッセージハンドルを実装します。

BOOL CChipTestDlg::PreTranslateMessage(MSG* pMsg) 
{
    // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
    if (pMsg->message == WM_MOUSEMOVE)
    {
        if( pMsg->hwnd == GetDlgItem(IDC_BUTTON1)->m_hWnd || 
            pMsg->hwnd == GetDlgItem(IDC_CHECK1)->m_hWnd )
        {
            m_toolTip.RelayEvent(pMsg);
        }
        else
        {
            m_toolTip.Pop();
        }
        return TRUE;
    }
    return CDialog::PreTranslateMessage(pMsg);
}

4.バルーンのようなツールチップ。m_toolTipのCreate()を呼び出すときに、TTS_BALLOON(=0x40)というパラメータを使えば、バルーン(吹き出し)のような形のツールチップ作れます。
m_toolTip.Create(this, TTS_ALWAYSTIP | TTS_BALLOON);