WM_CREATE wird leider im Subcass nicht aufgerufen.
Ich habe es erst einmal so gelöst:
Delphi-Quellcode:
var
OldProc: Pointer;
Font, olf: HFONT;
function WndProc(hWnd: HWND; uMsg: UINT; wParam, lParam: Integer): LRESULT;
stdcall;
var
ps: PAINTSTRUCT;
DC: HDC;
r: trect;
begin
Result := 0;
case uMsg
of
WM_PAINT:
begin
DC := BeginPaint(hWnd, ps);
SetBkMode(
DC, TRANSPARENT);
GetClientRect(hWnd, r);
windows.FrameRect(
DC, r, GetStockObject(WHITE_BRUSH));
olf := SelectObject(
DC, Font);
DrawText(
DC, PChar(_MyText), length(_MyText), r,
DT_SINGLELINE
or DT_NOPREFIX
or DT_CENTER
or DT_VCENTER);
SelectObject(
DC, olf);
EndPaint(hWnd, ps);
end;
else
Result := CallWindowProc(OldProc, hWnd, uMsg, wParam, lParam);
end;
end;
nur hätt ich's gern als echtes Subclassing mit
WM_SETFONT. Ich habe es auch mit
SetClassLong versucht, jedoch ohne Erfolg.