WTL CToolTipCtrl(ツールチップコントロール)をMFCで使う 【チュートリアル】


CToolTipCtrl

CToolTipCtrlは、ツールチップを表示するクラスでMFCとWTLでそれぞれ存在しています。MFCのCToolTipCtrlは、MSDNから引用させてもらうと、

このコンロトールは、アプリケーションでツールの目的を説明する 1 行のテキストを表示する小さなポップアップ ウィンドウです。

とのことで、1行しか表示できない上に使い方も多少面倒です。一方WTLのCToolTipCtrlは、WindowsのコントロールToolTip Controlからきており複数行表示やバルーンツールチップなどもできます。ということで、今回はMFCの環境でWTLのCToolTipCtrlを使う方法を紹介します。

スポンサーリンク

インクルード

ヘッダーのインクルードとしては、直接的には

をします。また、WTLを使用するということでstdafx.hあたりで

をするのですが、CMenuやCPaintDCがMFCのとかぶってしまうので#include <atlbase.h>の前に

を書きます。しかしこれを書いてもエラーが出ます。

c:\wtl\include\atlctrls.h(1986) : error C3861: ‘ImageList_Read’: 識別子が見つかりませんでした
c:\wtl\include\atlctrls.h(2093) : error C3861: ‘ImageList_Read’: 識別子が見つかりませんでした
c:\wtl\include\atlctrls.h(2099) : error C3861: ‘ImageList_Write’: 識別子が見つかりませんでした
c:\wtl\include\atlctrls.h(2106) : error C3861: ‘ImageList_ReadEx’: 識別子が見つかりませんでした
c:\wtl\include\atlctrls.h(2112) : error C3861: ‘ImageList_WriteEx’: 識別子が見つかりませんでした

おそらくこんなのが出てくるかと思います。これを回避するには、#include <atlbase.h>の前に

このようなものを書けばよいかと思います。おそらく、#include <afxwin.h>内のインクルード順序などでImageList_*が定義されなくなっているのではないかと思います。

コーディング

コーディングはいたって簡単で、使いたいウィンドウのクラスのメンバーで

を定義しOnInitDialog内でこのようなものを書けば終了です。

また、OnMouseMoveなどで

このようにテキストを変えるのも有効でしょう。実際下のように表示されます。

tooltipctrl.gif
スポンサーリンク
カテゴリー: チュートリアル   パーマリンク

コメントは受け付けていません。