function CreateToolTip(hObj: HWND; Text: PChar): Integer;
var
hTooltip: HWND;
hParent: HWND;
ti: TToolInfo;
S_OK: HResult;
begin
with SkinEngine
do
begin
hParent := GetParent(hObj);
hTooltip := ToolTipData(0, 0);
ZeroMemory(@ti, SizeOf(TToolInfo));
if hTooltip = 0
then
begin
InitComControls;
StyleEx := 0;
hTooltip := CreateWindowEx(StyleEx, TOOLTIPS_CLASS,
nil, WS_POPUP
or
TTS_ALWAYSTIP, integer(CW_USEDEFAULT),
integer(CW_USEDEFAULT), integer(CW_USEDEFAULT),
integer(CW_USEDEFAULT),
hParent, 0,
skInstance,
nil);
if hTooltip <> 0
then
begin
// Ohne dem lassen sich die Farben der Tooltips
// bei aktivierter Theme mit Manifest nicht verändern.
S_OK := SetWindowTheme(hTooltip, '
' , '
');
// <<< Theme auschalten .. nur gültig für das übergebene Handle
if S_OK = 0
then
begin
ToolTipData(hTooltip, 1);
SplitColorARGB(SK_ACTIVECAPTION, Alpha, Red, Green, Blue);
// <<< Neue Farbe
SendMessage(hTooltip, TTM_SETTIPTEXTCOLOR,
RGB(Red, Green, Blue), 0);
SplitColorARGB(SK_INACTIVECAPTION, Alpha, Red, Green, Blue);
// <<< Neue Farbe
SendMessage(hTooltip, TTM_SETTIPBKCOLOR,
RGB(Red, Green, Blue), 0);
SendMessage(hTooltip, TTM_SETMAXTIPWIDTH, 0, 400);
end;
end;
end;
// Addiere den ToolTipText
if hTooltip <> 0
then
begin
ti.cbSize := sizeof(ti);
ti.hinst := skInstance;
ti.uFlags := TTF_IDISHWND
or TTF_SUBCLASS;
ti.hWnd := hParent;
ti.uId := hObj;
SendMessage(hTooltip, TTM_ADDTOOL, 0, LParam(@ti));
SetToolTipText(hObj, Text)
end;
end;
Result := hTooltip;
end;