ビュー上のツールチップ表示


■ ツールチップとは
 ツールチップとは、通常ツールバーを作成した場合、マウスカーソルをツールバーのボタンの上に持ってきたときに、自動的にその内容を表示する機能です。
表示文字列は、メニューを作成するときにその[メニューアイテムプロンプト]ダイアログ内の[プロンプト]に入力する文字列の改行コード以降の文字列です。例えば、デフォルトの[印刷]メニューの場合は、[作業中のファイルを印刷\n印刷]の[印刷]が表示されます
■ ビュー上のツールチップ表示>
 ビューの或る範囲(RECT)内にカーソルが移動した時に、ツールチップを表示するサンプルを示します。
まず、サンプルの概観は以下の様になります。三色の矩形内にカーソルが移動したとき、それぞれに該当するツールチップを表示します。

画面のコピーを取ったためにカーソルがありませんが、実際は赤の四角内にカーソルがいます。
内容は、サンプルのソースコード(viewtpView.cpp)を見ていただければわかると思いますが、作成の手順を簡単に記します。

1. プロジェクトの作成。
このサンプルの場合は、SDIです。他の設定はデフォルトのままです。

2. 画面の作成。
このサンプルの場合は、ご覧の通り3色の矩形(RECT)を OnDraw()内で表示しています。
ウィンドウのサイズに画面を合わせるため、OnSize()を追加し、そこでビューのサイズと各矩形の位置を作成しています。

3. CToolTipCtrlメンバーの追加。
CViewtpViewにCToolTipCtrlのメンバーm_cToolTipを作成します。

4. ツールチップに表示する文字列の作成。
ストリングテーブル内に三色の矩形に対するメッセージを作成します。
サンプルでは、IDS_TOOLTIP1〜3です。

5. ツールチップの初期化処理。
PreCreateWindow内で、m_cToolTipを初期化します。
m_cToolTip.Create( this);
m_cToolTip.Activate( TRUE);
6. PreTranslateMessageを追加し以下のコードを追加します。
BOOL CViewtpView::PreTranslateMessage(MSG* pMsg)
{
if (m_hWnd)
{
m_cToolTip.RelayEvent (pMsg);
}
return CView::PreTranslateMessage(pMsg);
}
7. サイズの変更に対応するため、OnSize()内に以下のコードを追加します。
if ( m_cToolTip.GetToolCount())
{
m_cToolTip.DelTool( this, IDS_TOOLTIP1);
m_cToolTip.DelTool( this, IDS_TOOLTIP2);
m_cToolTip.DelTool( this, IDS_TOOLTIP3);
}
m_cToolTip.AddTool( this, IDS_TOOLTIP1, &m_wcr1, IDS_TOOLTIP1);
m_cToolTip.AddTool( this, IDS_TOOLTIP2, &m_wcr2, IDS_TOOLTIP2);
m_cToolTip.AddTool( this, IDS_TOOLTIP3, &m_wcr3, IDS_TOOLTIP3);
サイズの変更を考えない場合は、AddToolだけを初期化時に行えばよいです。
■ ファイルのダウンロード
(MFC6.0 プロジェクトファィル 42KB)