Seite 1 von 1

Win32-API-Funktion LockWindowUpdate

Verfasst: Fr, 15. Mär 2019 7:28
von Koverhage
Wie kann ich das in einer Xbase++ Anwendung (Express++) verwenden.
Hat jemand ein Bespiel dafür ?

Re: Win32-API-Funktion LockWindowUpdate

Verfasst: Fr, 15. Mär 2019 8:21
von AUGE_OHR
moin,

ich frage mich was du mit der API Function

Code: Alles auswählen

LockWindowUpdate(hwnd) 
bzw.

Code: Alles auswählen

SendMessage(hwnd, WM_SETREDRAW, FALSE, 0)
machen willst :?:

Xbase++ benutzt einen Presentation-Space welchen man durch o:lockPS() anfordern kann.
Windows nutzt den DC (Device Context) den man mit den API Function GetDC / GetDCEx anfordern kann.

die API Function LockWindowUpdate arbeitet nun mit hDC also denke ich nicht das man damit den Presentation-Space sperren kann.

p.s. das "malen" im hDC direct ist viel schneller als in oPS ... es muss ja alles noch an den hDC weitergereicht werden :!:
vermutlich sind deshalb die XbParts so viel langsamer ... und beim "um-kopieren" tritt dann das 4 GB Problem auf.

Re: Win32-API-Funktion LockWindowUpdate

Verfasst: Fr, 15. Mär 2019 8:49
von Koverhage
Was ich machen möchte ?
Den Bildschirmaufbau beschleunigen.

Re: Win32-API-Funktion LockWindowUpdate

Verfasst: Fr, 15. Mär 2019 9:05
von Tom
Das hast Du über die Methode :LockUpdate() in Xbase++ nativ zur Verfügung, die jedes von XbpWindow() abgeleitete Klassenobjekt kennt. oDialog:LockUpdate(.T.) sperrt den Dialog für die Aktualisierung, oDialog:LockUpdate(.F.) gibt ihn wieder frei (woraufhin mindestens ein oDialog:InvalidateRect() ausgelöst werden muss). Achtung, das ist nicht kaskadierend. Ein :LockUpdate(.F.) löst für das Klassenobjekt alle Locks, auch für die Kinder. Funktioniert einwandfrei - aber. Du musst ein bisschen aufpassen, gerade im Zusammenspiel mit eXpress++. Einfach mal ausprobieren.

Re: Win32-API-Funktion LockWindowUpdate

Verfasst: Fr, 15. Mär 2019 10:01
von Koverhage
Danke Tom, werde mal ein wenig damit spielen.