4

特定のHWNDに関連付けられているツールチップコントロール(存在する場合)を取得する方法を探しています。ツールチップコントロールのテキストも十分です。私が見つけた最も近いものはTTM_GETTEXTメッセージですが、関連付けられているツールではなく、ツールチップコントロール自体に送信されることを意図しています。ただし、ツールチップコントロールのハンドルはありません。誰かがこれを行う方法を知っていますか?

これはすべて、C++のプレーンなWindowsAPIを使用して行われます。

4

4 に答える 4

2

コントロールからヒントまたはそのテキストを取得するための特定のメッセージはないようですが、これは MFC の CWnd クラスが OnToolHitTest() を実装する方法であり、Win32 に適応できるはずです。

INT_PTR SomeFunction(HWND hWndChild, TOOLINFO *pTI)
{
    if (hWndChild != NULL) // Your HWND being tested
    {
        // return positive hit if control ID isn't -1
        INT_PTR nHit = _AfxGetDlgCtrlID(hWndChild);
        // Replace with GetDlgCtrlID().

        // hits against child windows always center the tip
        if (pTI != NULL && pTI->cbSize >= sizeof(AFX_OLDTOOLINFO))
        {
            // setup the TOOLINFO structure
            pTI->hwnd = m_hWnd;
            pTI->uId = (UINT_PTR)hWndChild;
            pTI->uFlags |= TTF_IDISHWND;
            pTI->lpszText = LPSTR_TEXTCALLBACK;

            // set TTF_NOTBUTTON and TTF_CENTERTIP if it isn't a button
            if (!(::SendMessage(hWndChild, WM_GETDLGCODE, 0, 0) & DLGC_BUTTON))
                pTI->uFlags |= TTF_NOTBUTTON|TTF_CENTERTIP;
        }
        return nHit;
    }
    return -1;  // not found
}

うまくいけば、これは役に立ちます。

于 2009-08-26T11:20:21.620 に答える
1

コントロールからツールチップ テキストを取得するには、TTN_NEEDTEXTメッセージを使用できます。ToolTip コントロールで使用するように設計されていますが、他の場所から送信できない理由がわかりません。

于 2009-08-26T13:46:39.613 に答える
1

ツールチップを取得したいウィンドウが、作成したウィンドウの子ウィンドウかどうかわかりません。

この場合、NM_TOOLTIPSCREATED 通知を処理できます。これは、子ウィンドウがツールチップを作成するときに子ウィンドウから親に送信されます (または送信する必要があります。一般的なコントロールには当てはまりますが、他の種類のウィンドウについてはわかりません)。ウィンドウズ)。この通知には、ツールヒント ウィンドウへのハンドルが含まれます。

于 2009-10-25T09:56:06.063 に答える