我想給我的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