Also ich habe deinen Code mal geändert, bei mir läuft das jetzt. Natürlich nur innerhalb des Fensters, denn außerhalb funktioniert WM_MOUSEMOVE nicht. Kannst ja mal testen, must sicherlich noch anpassen, da du nur ein Teil des Codes gezeigt hast. Ist sicher noch nicht optimal.
Delphi-Quellcode:
var
clr: integer;
//globale variable
//...
var
WinInfo: TWindowInfo;
brush: HBrush;
pt: TPoint;
hDC: cardinal;
begin
//Result := 0;
case uMsg
of
WM_CTLCOLORSTATIC:
begin
case GetDlgCtrlId(lParam)
of
IDC_COLOR_RECT:
begin
brush := CreateSolidBrush(clr);
Result := BOOl(brush);
end;
end;
end;
WM_MOUSEMOVE:
begin
if (*(GetCapture = hWnd) and*) GetCursorPos(pt)
then
begin
FillChar(WinInfo,Sizeof(WinInfo),0);
WinInfo.cbSize := Sizeof(WinInfo);
GetWindowInfo(hWnd,WinInfo);
dec(pt.X, WinInfo.rcClient.Left);
dec(pt.Y, WinInfo.rcClient.Top);
hDC:= GetDC(hWnd);
clr:= GetPixel(hDC, pt.x, pt.y);
windows.ReleaseDC(hWnd, hDC);
RedrawWindow(hwndLabel1,
nil, 0, RDW_INVALIDATE
or RDW_ERASE);
//neu Zeichnen
end;
end;
//...