SetWindowPos对工具提示没有影响

时间:2010-06-10 14:44:00

标签: c++ visual-c++ mfc winapi

我正在尝试为我的ComboBox提供一个长字符串的工具提示。但是,当我在工具提示上调用SetWindowPos时,位置永远不会改变。收到TTN_SHOW时调用:

::SetWindowPos(textTooltip, NULL, TipRect.left, TipRect.top, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOZORDER);

如果我删除SWP_NOSIZE标志并在宽度/高度中弹出一些值,则组合框会将大小更改为这些值,但位置保持不变。 SetWindowPos始终返回TRUE。

提示初始化如下:

        textTooltip = CreateWindowEx(WS_EX_TRANSPARENT, TOOLTIPS_CLASS, NULL, TTS_NOPREFIX, 0, 0, 0, 0, this->GetSafeHwnd(), NULL, NULL, NULL);
        if(!textTooltip)
            return;

        ZeroMemory(&ToolInfo, sizeof(TOOLINFO));
        ToolInfo.cbSize = sizeof(TOOLINFO);
        ToolInfo.uFlags = TTF_TRANSPARENT | TTF_SUBCLASS; 
        ToolInfo.hwnd = this->GetSafeHwnd();
        ToolInfo.lpszText = "place holder"; //set in OnSelectChangeOk
        ToolInfo.uId = 0;   
        ToolInfo.rect = TipRect; //rect is re-set in OnSelectChangeOk

        ::SendMessage(textTooltip, TTM_ADDTOOL, 0, (LPARAM)&ToolInfo);

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

你必须::SendMessage(hToolWnd, TTM_TRACKPOSITION, 0, MAKELPARAM(x, y));并在TTF_ABSOLUTE成员中设置ToolInfo.uFlags标志!

有关更多信息,请参阅:http://msdn.microsoft.com/en-us/library/bb760422(VS.85).aspx