Здравствуйте, sined, Вы писали:
S>Здравствуйте, linker, Вы писали:
L>>Мое предположение что все таки fsStayOnTop-значит поверх все окон,следовательно и поверх hint'а тоже.У тебя кстати hint все время од формой или только первый раз?Если первый раз то проблемы в паренте.А ты хинт вообще как показываешь THintWindow(ActivateHitn)или как то ещё?
S>Хинт все время под формой , хинт показывает ListView сам автоматически. А что можно его как то принудительно вытащить , можешь поподробнее сказать что это за THintWindow(ActivateHitn)
Написан вариант решения.
Я надеюсь подключить дадумаешся как
Идея в том чтобы ListView's Hint сделать тоже TopMost. Идея написана только что и может быть конечно более элегантной (класс хинта может быть совсем иным, может сообщение не совсем красивое выбрал...).
Но этот подход работает!
var
varWndProcHookHandle : HWND;
function HintWindowWndProcHook (Code: Integer; wParam: WParam; lParam: LParam): LRESULT; stdcall;
var
Buf : array [0..1000] of char;
HookStruct : PCWPStruct;
WindowPosStruct : PWindowPos;
begin
HookStruct := Pointer (lParam);
case HookStruct.message of
WM_WINDOWPOSCHANGING :
begin
WindowPosStruct := PWindowPos (Pointer (HookStruct.lParam));
GetClassName (WindowPosStruct.hwnd, @Buf, SizeOf (Buf));
if SameText ('tooltips_class32', Buf) then begin
SetWindowPos (WindowPosStruct.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOSENDCHANGING or SWP_NOACTIVATE);
end;
end;
end;
Result := CallNextHookEx(varWndProcHookHandle, Code, wParam, lParam);
end;
initialization
varWndProcHookHandle := SetWindowsHookEx(WH_CALLWNDPROC, HintWindowWndProcHook, 0, GetCurrentThreadId);
finalization
UnhookWindowsHookEx (varWndProcHookHandle);
end.
Удачи!