|
EWeiss
(Gast)
n/a Beiträge |
#7
![]() Und diese Nachricht soll nicht verarbeitet werden? Dann verarbeite sie doch und tue nichts. Dann wird deutlicher was du vorhast. So musste ioch die Frage stellen, das entfällt, wen du es so machst, wie ich es vorgeschlagen habe.
Oder was willst mir damit sagen.. Meine APP Proc
Delphi-Quellcode:
Meine Def Proc
function WndProc(WinHandle: HWND; Msg: UINT; wP: WParam; lP: LParam): longint;
stdcall; var ps: TPaintStruct; rw: PRect; hBut: THandle; imgW: cardinal; pMM: PMinMaxInfo; CaptionHeight: integer; p: TPoint; begin with SkinEngine do begin case Msg of WM_GETMINMAXINFO: begin pMM := PMinMaxInfo(lP); pMM^.ptMinTrackSize.x := MinTrackSizeX[0]; pMM^.ptMinTrackSize.y := MinTrackSizeY[0]; end; WM_COMMAND: begin if ButtonSysCommand(WinHandle, wP) then begin Result := 0; Exit; end; case LoWord(wP) of ID_AEROCRYSTAL: begin if GetCheckButtonStatus(GetMainItem(ID_AEROCRYSTAL)) then begin SplitColorARGB(SK_AEROCOLOR, Alpha, Red, Green, Blue); FConfig.AeroColor[ColorARGB(GetTrackValue(GetMainItem( ID_TRACK_OPACITY)), RGB(Red, Green, Blue)), SK_WRITE]; SetCheckButtonStatus(GetMainItem(ID_AERODISABLE), False); SetCheckButtonStatus(GetMainItem(ID_AEROBLUR), False); FConfig.AeroEmulate[SK_WRITE, SK_WRITE]; FConfig.AeroBlueLevel[SK_FALSE, SK_WRITE]; SetTrackValue(GetMainItem(ID_TRACK_BLURLEVEL), SK_AEROBLURLEVEL); SetTimer(WinHandle, AERO_TIMER, SK_AEROTIMERDELAY, nil); FConfig.UseVistaBlur[SK_FALSE, SK_WRITE]; FConfig.UseVistaCrystal[SK_WRITE, SK_WRITE]; FConfig.TextRendering[TextRenderingHintAntiAlias, 1]; end else begin FConfig.TextRendering[TextRenderingDefault, 1]; KillTimer(WinHandle, AERO_TIMER); FConfig.AeroEmulate[SK_FALSE, SK_WRITE]; SetCheckButtonStatus(GetMainItem(ID_AERODISABLE), True); FConfig.UseVistaBlur[SK_FALSE, SK_WRITE]; FConfig.UseVistaCrystal[SK_FALSE, SK_WRITE]; end; GetWindowRect(WinHandle, rc); MoveBackground(rc.Left, rc.Top); FUpdateWindow(WinHandle, False); end; ID_AEROBLUR: begin if GetCheckButtonStatus(GetMainItem(ID_AEROBLUR)) then begin SplitColorARGB(SK_AEROCOLOR, Alpha, Red, Green, Blue); FConfig.AeroColor[ColorARGB(GetTrackValue(GetMainItem( ID_TRACK_OPACITY)), RGB(Red, Green, Blue)), SK_WRITE]; SetCheckButtonStatus(GetMainItem(ID_AERODISABLE), False); SetCheckButtonStatus(GetMainItem(ID_AEROCRYSTAL), False); FConfig.AeroEmulate[SK_WRITE, SK_WRITE]; FConfig.AeroBlueLevel[6, SK_WRITE]; SetTrackValue(GetMainItem(ID_TRACK_BLURLEVEL), SK_AEROBLURLEVEL); SetTimer(WinHandle, AERO_TIMER, SK_AEROTIMERDELAY, nil); FConfig.UseVistaCrystal[SK_FALSE, SK_WRITE]; FConfig.UseVistaBlur[SK_WRITE, SK_WRITE]; FConfig.TextRendering[TextRenderingHintAntiAlias, 1]; end else begin FConfig.TextRendering[TextRenderingDefault, 1]; KillTimer(WinHandle, AERO_TIMER); FConfig.AeroEmulate[SK_FALSE, SK_WRITE]; SetCheckButtonStatus(GetMainItem(ID_AERODISABLE), True); FConfig.UseVistaBlur[SK_FALSE, SK_WRITE]; FConfig.UseVistaCrystal[SK_FALSE, SK_WRITE]; end; GetWindowRect(WinHandle, rc); MoveBackground(rc.Left, rc.Top); FUpdateWindow(WinHandle, False); end; ID_AERODISABLE: begin if GetCheckButtonStatus(GetMainItem(ID_AERODISABLE)) then begin SetCheckButtonStatus(GetMainItem(ID_AEROBLUR), False); SetCheckButtonStatus(GetMainItem(ID_AEROCRYSTAL), False); FConfig.AeroEmulate[SK_FALSE, SK_WRITE]; FConfig.TextRendering[TextRenderingDefault, 1]; KillTimer(WinHandle, AERO_TIMER); FConfig.UseVistaBlur[SK_FALSE, SK_WRITE]; FConfig.UseVistaCrystal[SK_FALSE, SK_WRITE]; GetWindowRect(WinHandle, rc); MoveBackground(rc.Left, rc.Top); FUpdateWindow(WinHandle, False); end else SetCheckButtonStatus(GetMainItem(ID_AERODISABLE), True); end; ID_TRACK_OPACITY: begin if SK_AEROEMULATE <> 0 then begin SplitColorARGB(SK_AEROCOLOR, Alpha, Red, Green, Blue); FConfig.AeroColor[ColorARGB(lP, RGB(Red, Green, Blue)), SK_WRITE]; GetWindowRect(WinHandle, rc); MoveBackground(rc.Left, rc.Top); FUpdateWindow(WinHandle, False); end; end; ID_TRACK_BLURLEVEL: begin if lP <> SK_AEROBLURLEVEL then begin FConfig.AeroBlueLevel[lP, SK_WRITE]; if SK_AEROEMULATE = 1 then begin GetWindowRect(WinHandle, rc); MoveBackground(rc.Left, rc.Top); FUpdateWindow(WinHandle, False); end; end; end else begin Result := 0; exit; end; end; end; WM_SIZE: begin DrawBackground; EnumChildWindows(WinHandle, @AnchorEnum, 0); FUpdateWindow(WinHandle, False); end; WM_SETTEXT: begin Result := DefWindowProc(WinHandle, Msg, wP, lP); // Aktualisiere das Caption PaintBackground; // Nur Caption neuzeichnen GetClientRect(WinHandle, rc); GetImageSize(GetProperty(WinHandle, FORM_TopMid), imgW, cardinal(rc.Bottom)); InvalidateRect(WinHandle, @rc, False); UpdateWindow(WinHandle); exit; end; WM_NCLBUTTONDBLCLK: begin if IsIconic(WinHandle) then begin p.X := LoWord(lP); p.Y := HiWord(lP); ScreenToClient(WinHandle, p); GetImageSize(GetProperty(WinHandle, FORM_TopMid), imgW, cardinal(CaptionHeight)); if p.Y < CaptionHeight then begin if IsZoomed(WinHandle) then ButtonSysCommand(WinHandle, MAKELONG(ID_RESTORE, 0)) else ButtonSysCommand(WinHandle, MAKELONG(ID_MAXIMIZE, 0)); Result := 0; exit; end; end; end; WM_NCACTIVATE: begin hBut := GetDlgItem(WinHandle, ID_LED); if hBut <> 0 then begin Result := DefWindowProc(WinHandle, Msg, wP, lP); if MainWindow(0) = GetForegroundWindow then gColorCaption := SK_ACTIVECAPTION else gColorCaption := SK_INACTIVECAPTION; // Aktualisiere das Caption PaintBackground; // Nur Caption neuzeichnen GetClientRect(WinHandle, rc); GetImageSize(GetProperty(WinHandle, FORM_TopMid), imgW, cardinal(rc.Bottom)); InvalidateRect(WinHandle, @rc, False); UpdateWindow(WinHandle); exit; end; end; WM_ERASEBKGND: begin Result := 1; exit; end; WM_PAINT: begin BeginPaint(WinHandle, ps); PaintDoubleBuffer(WinHandle, ps.hdc); EndPaint(WinHandle, ps); Result := 0; exit; end; WM_DESTROY: begin RemoveAllImageResource; DestroyWindowResource(WinHandle); PostQuitMessage(0); Result := 0; Exit; end; WM_TIMER: begin if IsCompositionEnabled = False then begin if (SK_AEROEMULATE = 1) and IsAeroLayered then begin if IsLButtonDown = False then IsMoving := False; if (IsMoving = False) or (IsLButtonDown and (IsMoving)) then begin GetWindowRect(WinHandle, rc); MoveBackground(rc.Left, rc.Top); FUpdateWindow(WinHandle, False); end; end; end; end; WM_NCLBUTTONDOWN: IsMoving := True; WM_MOVING: begin if IsCompositionEnabled = False then begin if (SK_AEROEMULATE = 1) and IsAeroLayered then begin rw := PRect(lP); MoveBackground(rw.Left, rw.Top); FUpdateWindow(WinHandle, False); Result := 1; exit; end; end; end; end; Result := skDefWindowProc(WinHandle, Msg, wP, lP); end; end;
Delphi-Quellcode:
Ich springe bei WM_PAINT raus um diese danach nicht zu verarbeiten wenn das Paint Event beendet ist.
function skDefWindowProc(WinHandle: HWND; Msg: UInt; wP: WParam; lP: lParam): longint;
stdcall; var rc: TRect; p: TPoint; CaptionHeight: cardinal; xF, yF, xSide, BORDER: integer; HITTEST: integer; begin Result := DefWindowProc(WinHandle, Msg, wP, lP); HITTEST := 0; if Msg = WM_NCHITTEST then begin SkinEngine.GetImageSize(SkinEngine.GetProperty(WinHandle, FORM_TopMid), imgW, CaptionHeight); p.X := LoWord(lP); p.Y := HiWord(lP); ScreenToClient(WinHandle, p); if IsZoomed(WinHandle) = False then begin if Result = HTCLIENT then begin HITTEST := HTCAPTION; if SkinEngine.SK_DRAG_BACKGROUND = 0 then begin if (p.Y > integer(CaptionHeight)) and (CaptionHeight > 0) then begin HITTEST := HTNOWHERE; if WinHandle <> GetForegroundWindow then SetFocus(WinHandle); end; end; if SkinEngine.WinResizable(WinHandle) <> 0 then GetClientRect(WinHandle, rc); xF := rc.Right; yF := rc.Bottom; xSide := 0; BORDER := GetSystemMetrics(32); if ((p.X >= xF - BORDER) and ((p.Y >= yF - BORDER))) then begin HITTEST := HTBOTTOMRIGHT; end else begin // Linke Seite if (p.X <= 8) then begin if (p.X <= BORDER) then HITTEST := HTLEFT; xSide := 1; end; // Rechte Seite if (p.X >= xF - 8) then begin if (p.X >= xF - BORDER) then HITTEST := HTRIGHT; xSide := 2; end; // Obere Seite if (p.Y <= BORDER) then begin HITTEST := HTTOP; if (xSide = 1) then HITTEST := HTTOPLEFT else if (xSide = 2) then HITTEST := HTTOPRIGHT; end; // Untere Seite if (p.Y >= yF - BORDER) then begin if (xSide = 1) then HITTEST := HTBOTTOMLEFT else HITTEST := HTBOTTOM; end; end; end; Result := HITTEST; end else begin if p.Y < integer(CaptionHeight) then Result := HTCAPTION; end; end; end; Was ist da falsch ? gruss Emil |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |