我想给我的ComboBox提供长字符串的工具提示。但是,当我在工具提示上调用SetWindowPos时,位置永远不会改变。被接收时TTN_SHOW称为:如果删除了标志SWP_NOSIZE和流行在一些值宽度/高度SetWindowPos对工具提示没有影响
::SetWindowPos(textTooltip, NULL, TipRect.left, TipRect.top, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOZORDER);
,然后在组合框改变大小于这些值,但位置保持相同。 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);
我缺少的东西?
呀,你缺少的是检查返回值并调用GetLastError()可找出什么是错的代码。 – 2010-06-10 15:45:24
我在发布时删除了大部分错误检查,以使其更清洁一些。如后所述,SetWindowsPos返回TRUE,因此GetLastError()返回0.对SendMessage的调用也返回TRUE。谢谢。 – Andrew 2010-06-11 05:25:04