| |
VB & Windows APISchnelle 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 | |
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 | |
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 | |
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 | |
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 | |
| 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 |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere Infos
|
|
|
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
|
|