Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: [nonVCL] Farbe von STATIC bei Mausbewegung ändern

  Alt 11. Feb 2007, 21:38
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;
//...
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat