![]() |
Dimmed Sample
Projekt entfernt..
|
AW: Dimmed Sample
Noch nicht perfekt aber ein Anfang.
Windows werden nun richtig gezeichnet. Hatte vergessen das GetDC ja nur für den Client Bereich zuständig ist Mit GetWindowDC hat's dann funktioniert. Und die Farbe zu der gefaded werden soll kann man nun angeben.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin AutoFade(Form1, RGB(255,255,255), RGB(0, 0, 0) {RGB(64,128,255), RGB(0, 32, 64)}); ShowMessage('What nu.. Hi greyed out'); deinit := DIMMED_DEINIT; end; gruss |
AW: Dimmed Sample
Darf man nach der Technik fragen, die du da anwendest? Legst du eine weiter Form über die bestehende? Oder greifst du irgendwie in die Zeichenprozedur ein?
|
AW: Dimmed Sample
Zitat:
Ich lege eine Form als Child in die Anwendung kopiere den Hintergrund vom Devicekontex mit GetWindowDC / BitBlt und übertrage diesen in das Childwindow dabei wird die Original Farbe in die Übergebene gefadet. Das ganze EXE -> DLL gruss |
AW: Dimmed Sample
Okay, hatte ich mir schon gedacht, dass das so läuft ;) Danke dir!
|
AW: Dimmed Sample
Zitat:
Hab im moment wiedermal ein problem beim Freigeben der Classe mal gehts mal nicht :wall: To many error in Free :oops: Obwohl alles korrekt freigegeben wird. Wüßte nicht was da falsch sein sollte.
Delphi-Quellcode:
type
TFadeWnd = class(TComponent) private { Private-Deklarationen } procedure AutoFade(pParentWnd: TWinControl; clLight: COLORREF; clDark: COLORREF); stdcall; procedure CreateGradient(clLight: COLORREF; clDark: COLORREF); virtual; procedure FadeWnd(pParentWnd: TWinControl; clLight: COLORREF; clDark: COLORREF); stdcall; public function GetDibR(const drgb: cardinal): cardinal; inline; function GetDibG(const drgb: cardinal): cardinal; inline; function GetDibB(const drgb: cardinal): cardinal; inline; function Create(pParentWnd: TWinControl; rc: TRect): Bool; reintroduce; overload; constructor Create(AOwner: TWinControl); reintroduce; overload; destructor Destroy; override; protected m_clGradient: array [0..255] of COLORREF; m_hBitmap: HBITMAP; m_hNewBitmap: HBITMAP; m_pWndLock: TWinControl; procedure OnDraw(pDC: HDC); function CopyScreenToBitmap(lpRect: TRect): HBITMAP; function FadeBitmap(hBmp: HBITMAP; dfTrans: double = 100.0; hBmpDC: HDC = 0): HBITMAP; end; var pFade: TFadeWnd; MainHandle: HWND; Pixels: array of Cardinal; // Exports function FadeCreate(pParentWnd: TWinControl;clLight: COLORREF; clDark: COLORREF): Bool; stdcall; procedure FadeDestroy; stdcall;
Delphi-Quellcode:
procedure FadeDestroy; stdcall;
begin if Assigned(pFade) then begin DestroyWindow(MainHandle); pFade.Free; pFade := nil; end; end; gruss |
AW: Dimmed Sample
Knallt's denn bei DestroyWindow(MainHandle) oder bei pFade.Free?
|
AW: Dimmed Sample
Zitat:
Der Compiler geht ins ASM Window und steht in TObject.Free. Muss mal schaun scheint ein problem mit dem Array Pixels zu sein. EDIT: Jo das wars.. Mußte nach der zuweisung vom neuen Bitmap das verändert wurde das Array löschen.
Delphi-Quellcode:
FillChar(Pixels, SizeOf(Pixels), 0);
Jetzt gehts.. gruss |
AW: Dimmed Sample
Hier zum Testen...
Bei mir läuft es auf Win7. gruss |
AW: Dimmed Sample
Lööf... aber beim Schließen ist dann doch wieder Farbe zu sehen, wenn auch nur kurz ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz