vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Schnelle Veränderung der Position von Steuerelementen mithilfe von CopyMemory 
Autor: Hazard
Datum: 11.05.12 11:33

Guten Tag Forum,

ich habe eine Steuerelementarray Tabelle gemacht und dafür eine Scrollfunktion geschrieben. Nur kommt mir die Bildschirmausgabe des Scrollens dieser Tabelle langsam vor. Ich suche deswegen nach einer Methode diese Funktion zu beschleunigen. Ich habe bereits ein Beispiel anderer Art mit CopyMemory gesehen und bin von dem Ergebniss beeindruckt. Meine Frage lautet nun, ob man mithilfe von CopyMemory einen schnellen Zugriff auf die

Objekt.Top
Objekt.Left
Objekt.Height
Objekt.Width

Eigenschaften von Standard- und selbst geschriebenen Steuerlementen erreichen könnte. Ich stelle es mir so vor, daß ich ein Array mit diesen Werten erstelle und sie dann mittels CopyMemory direkt im Speicher verändere, was die Sache beschleunigen dürfte. Dazu bräuchte ich aber die Adressen der Variablen dieser Steuerelementeigenschaften.

Ich bitte um Hilfe.

Gruß,
Hazard
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Schnelle Veränderung der Position von Steuerelementen mithilfe von CopyMemory 
Autor: Manfred X
Datum: 11.05.12 12:53

Hallo!

Die API "rtlmovememory" verschiebt zusammenhängende Datenblöcke im
Hauptspeicher (wobei Quell-/Ziel-Bereiche sich überschneiden können).

Für Deinen skizzierten Zweck ist diese Low-Level-Routine nicht geeignet.

Eventuell könntest Du darüber nachdenken, nicht die Steuerelemente zu
verschieben (die dabei neu gezeichnet werden müssen!), sondern statt
dessen die jeweiligen Dateninhalte den Controls neu zuzuweisen.

Du kannst auch die Möglichkeit der Nutzung von VB 2010 prüfen.

MfG
Manfred
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Schnelle Veränderung der Position von Steuerelementen mithilfe von CopyMemory 
Autor: Hazard
Datum: 11.05.12 13:14

Hallo Manfred,

danke für die Antwort.

Wenn ich die Adresse der Variablen habe, die die Positionswerte des Steuerelementes beinhalten, kann ich sie Byte für Byte mit CopyMemory verändern. So habe ich es im Beispiel gesehen. Es würde sich um die Veränderung eines Speicherblocks handeln, weil ich mehrere Bytes einer Longvariable ändern muß. Im Beispiel wurden die Bildpunkte eines großen Bildes manipuliert und das ging so schnell, daß man praktisch keine Verzögerung bemerkte, als das Bild neu gezeichnet wurde.

Gruß,
Hazard
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Schnelle Veränderung der Position von Steuerelementen mithilfe von CopyMemory 
Autor: Manfred X
Datum: 11.05.12 13:35

Hallo!

Die Eigenschaftswerte (z.B. Width) werden vom Control verwaltet und
auf Änderungen wird vom Control reagiert. Du kannst nicht direkt eingreifen,
sondern nur Werte zuweisen.

Zusammenhängende Bild-Daten können in direkt in einen Speicherbereich
"geblittet" und am Schirm angezeigt werden.

Controls werden, abhängig von einer Vielzahl von Eigenschaften,
detailliert neu gezeichnet. (Z.B. durch Verwendung von Container-Controls
lassen sich Verschiebungen vereinfachen/optimieren.)

Bei der Änderung des Werts von Eigenschaften werden ggf. Events ausgelöst
und der dem Eventhandler zugeordnete Code wird ausgeführt.

MfG
Manfred
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Schnelle Veränderung der Position von Steuerelementen mithilfe von CopyMemory 
Autor: Hazard
Datum: 12.05.12 10:16

Hallo Manfred,

danke für die Erläuterung.

Habe das Problem jetzt anders gelößt.

Ich habe ein rahmenloses Frame genommen, die erste Zeile der Tabelle, also Objekt(0), darin eingebettet und das Frame in ein selbstdefiniertes Steuerlement gesteckt. Das selbstdefinierte Steuerelemt dient der Begrenzung der Tabelle nach oben und unten hin auf dem Bildschirm. Ich verschiebe jetzt das Frame mit den geladenen Steuerelementen im selbstdefiniertem Steuerelement hin und her und bin mit dem Ergebnis zufrieden. Ich bemerke kein Ruckeln, beim Verschieben.

Gruß,
Hazard
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel