居候部屋/ 居候掲示板/ 大家さん |
既存のコードでボタン上にマウスを置いたときにツールチップを表示 | ||
---|---|---|
ATL/WTLで作ってたコードを Visual Studio 2012 Express でやろうとしたら、 'atlbase.h': No such file or directory "atlbase.h" がありません。 色々、試しましたが、素直にそれぞれのボタンにツールチップを設定することにしました。 今回は MFC も ATL/WTL も使いません。コモンコントロールを使います。 まず、インクルードファイルを追加で挿入します。リンクするライブラリも指定しておきます #include <commctrl.h> #pragma comment(lib,"comctl32.lib") 次に、ボタンコントロールのハンドルを得るために TOOLINFO型、HWND 型の変数をそれぞれ宣言しておきます。ついでにツールチップ用のハンドル(HWND)もセットで宣言します。 ここでは2つのボタンを想定して、それぞれ TOOLINFO ti1,ti2; HWND w1,w2,t1,t2; とし、ボタンを作成する CreateWindow() の戻り値を w1,w2 に入れます(w2の方は省略)。ツールチップ用のウィンドウも t1,t2として開きます(こっちは CreateWindowEx)。 InitCommonControls(); w1=CreateWindow(TEXT("BUTTON"),TEXT("Paste"), BS_PUSHBUTTON|BS_BITMAP^WS_CHILD^WS_VISIBLE^WS_GROUP^WS_TABSTOP, 5,5,34,32,hWnd,(HMENU)ID_BUTTON0,hInst,NULL); t1=CreateWindowEx(0,TOOLTIPS_CLASS,NULL,WS_POPUP|TTS_ALWAYSTIP, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT,w1,NULL,hInst,NULL); GetClientRect(w1,&ti1.rect); ti1.cbSize=sizeof(TOOLINFO); ti1.uFlags=TTF_IDISHWND|TTF_SUBCLASS; ti1.hwnd=w1; ti1.uId=(WPARAM)w1; ti1.lpszText=TEXT("クリップボード\r\nから貼り付け"); //表示する文字列 SendMessage(ti1,TTM_ADDTOOL,0,(LPARAM)&ti1); |
||
右がビルドしてツールチップが表示できたさま。 TTM_SETMAXTIPWIDTH をSendMessageすれば、ツールチップ内の改行も可能です。 キャプチャはウィンドウズの拡大鏡を使ってます。マウスカーソルまで取り込めます。 |
ではまた |