긴 문자열에 대한 내 툴팁에 ComboBox를 사용하려고합니다. 그러나 도구 설명에서 SetWindowPos를 호출하면 위치가 변경되지 않습니다. TTN_SHOW가 수신 될 때 호출 :SetWindowPos가 툴팁에 영향을주지 않습니다.
::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);
내가 뭔가를 놓치고 있습니까 :
끝은과 같이 초기화한다?
그래, 당신은 반환 값을 확인하고 문제가 있는지 알아 내기 위하여() GetLastError를 호출하는 코드 누락 :에
자세한 내용은 앞, 참조하십시오. –
게시 할 때 오류 검사의 대부분을 제거하여 조금 깔끔하게 만들었습니다. 포스트 SetWindowsPos에 명시된 바와 같이 TRUE를 반환하므로 GetLastError()는 0을 반환합니다. SendMessage를 호출하면 TRUE가 반환됩니다. 감사. – Andrew