AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Test: Erweitertes Drag & Dock für TBX
Thema durchsuchen
Ansicht
Themen-Optionen

Test: Erweitertes Drag & Dock für TBX

Ein Thema von mirage228 · begonnen am 3. Jul 2009 · letzter Beitrag vom 3. Jul 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#11

Re: Test: Erweitertes Drag & Dock für TBX

  Alt 3. Jul 2009, 16:53
Hey,

Ich habe das an die Zeichenroutine an TB2k angelehnt:
Delphi-Quellcode:
  Size.cx := GetSystemMetrics(SM_CXDLGFRAME);
  Size.cy := Size.cx;
  // Outline zeichnen
  DC := GetDCEx(GetDesktopWindow, 0,
    DCX_LOCKWINDOWUPDATE or DCX_CACHE or DCX_WINDOW);
   TB2Common.DrawHalftoneInvertRect(DC, @OutlineRect,
     nil, Size, Size);
  ReleaseDC(GetDesktopWindow, DC);
  // ...
  // Outline löschen
  DC := GetDCEx(GetDesktopWindow, 0,
    DCX_LOCKWINDOWUPDATE or DCX_CACHE or DCX_WINDOW);
  SetRectEmpty(R);
  TB2Common.DrawHalftoneInvertRect(DC, @R, @FLastOutlineRect, Size, Size);
  ReleaseDC(GetDesktopWindow, DC);

// TB2Common.pas
procedure DrawHalftoneInvertRect(const DC: HDC; const NewRect, OldRect: PRect;
  const NewSize, OldSize: TSize);
var
  Brush: HBRUSH;
begin
  Brush := CreateHalftoneBrush;
  try
    DrawInvertRect(DC, NewRect, OldRect, NewSize, OldSize, Brush, Brush);
  finally
    DeleteObject(Brush);
  end;
end;
Das ganze ist zudem angelehnt an die BeginMoving-Methode aus der TB2Dock.pas.

Viele Grüße
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#12

Re: Test: Erweitertes Drag & Dock für TBX

  Alt 3. Jul 2009, 17:07
Hallo,

das Problem wird sein, dass seit Vista das Zeichnen auf den Desktop vermieden werden sollte. Durch den DWM ist das erstens langsamer, und zweitens kann es eben zu solchen Effekten kommen, dass ein Xor nicht mehr funktioniert. Eine Lösung weiß ich aber leider auch nicht (da wäre ich selbst dran interessiert).

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#13

Re: Test: Erweitertes Drag & Dock für TBX

  Alt 3. Jul 2009, 17:16
Zitat von xaromz:
das Problem wird sein, dass seit Vista das Zeichnen auf den Desktop vermieden werden sollte. Durch den DWM ist das erstens langsamer, und zweitens kann es eben zu solchen Effekten kommen, dass ein Xor nicht mehr funktioniert. Eine Lösung weiß ich aber leider auch nicht (da wäre ich selbst dran interessiert).
Laut Doku von GetDCEx() kann man auch NULL (also 0 als Handle) übergeben, dann kriegt man auch den DC für den gesamten Bildschirm, was ebenso gehen müsste. Oder ist "entire screen = desktop handle"?
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#14

Re: Test: Erweitertes Drag & Dock für TBX

  Alt 3. Jul 2009, 17:28
Hallo,
Zitat von mirage228:
Oder ist "entire screen = desktop handle"?
IMHO ja.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#15

Re: Test: Erweitertes Drag & Dock für TBX

  Alt 3. Jul 2009, 17:36
Hm, also ich habe jetzt nochmal was geändert. Undzwar wird während des gesamten Drag-Vorgangs nur ein DC benutzt, um zu zeichnen (vorher wurde immer ein neues DC angefordert). Vielleicht liegt da ja der Hund begraben.
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#16

Re: Test: Erweitertes Drag & Dock für TBX

  Alt 3. Jul 2009, 18:00
Hallo,
Zitat von mirage228:
Hm, also ich habe jetzt nochmal was geändert. Undzwar wird während des gesamten Drag-Vorgangs nur ein DC benutzt, um zu zeichnen (vorher wurde immer ein neues DC angefordert). Vielleicht liegt da ja der Hund begraben.
Hilft leider auch nichts .

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#17

Re: Test: Erweitertes Drag & Dock für TBX

  Alt 3. Jul 2009, 18:08
Na gut, dann werde ich mir mal den VCL Code zum Docken anschauen, dort geht das ja offensichtlich mit den Rahmen ...

Viele Grüße
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es 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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz