コントロールにチップをつける(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)というパラメータを使えば、バルーン(吹き出し)のような形のツールチップ作れます。 |