1

ボタンのツールチップを作成するために MFC CToolTipCtrl を使用しています。Windows XP でアプリケーションを実行すると問題が発生します。マウスをボタンの上に置くとツールチップがポップアップしますが、ボタンをクリックしてもツールチップは表示されません。Windows 7 ではそのような問題はありません。次のコードを使用してツールチップを作成しました

pToolTip->Create(this);

TOOLINFO ToolInfo;
ToolInfo.cbSize     = sizeof(TOOLINFO);
ToolInfo.lpszText   = const_cast<LPTSTR>(szToolTipText);
ToolInfo.hinst      = AfxGetInstanceHandle();
ToolInfo.hwnd       = pButton->m_hWnd;
ToolInfo.uFlags     = TTF_SUBCLASS | TTF_IDISHWND;
ToolInfo.uId        = (UINT)pButton->m_hWnd;

pToolTip->SendMessage(TTM_ADDTOOL, 0, (LPARAM) &ToolInfo);
4

1 に答える 1

1

関数内で relayevent を呼び出してみてくださいpreTanslateMessage

MSDN から: http://msdn.microsoft.com/en-US/library/x61cthdf(v=vs.80).aspx

ツール ヒント コントロールが WM_LBUTTONXXX メッセージなどの重要なメッセージを通知されるようにするには、メッセージをツール ヒント コントロールに中継する必要があります。このリレーの最適な方法は、オーナー ウィンドウの PreTranslateMessage 関数で CToolTipCtrl::RelayEvent を呼び出すことです。

次の例は、可能な方法の 1 つを示しています (ツール ヒント コントロールが m_ToolTip と呼ばれると仮定します)。

if(pMsg->message== WM_LBUTTONDOWN ||
        pMsg->message== WM_LBUTTONUP ||
        pMsg->message== WM_MOUSEMOVE)
m_ToolTip.RelayEvent(pMsg);

return CMyView::PreTranslateMessage(pMsg);

上記のVS2010を使用している場合は、CMFCButtonを使用するだけでツールチップを設定する方法があり、作業がはるかに簡単になります.

于 2012-09-25T06:55:57.397 に答える