| |
VB & Windows APIWarum liefert GetWindowRect falsche Daten? | | | Autor: schmidt34 | Datum: 14.01.16 18:23 |
| Ich habe die API-Funktion GetWindowRect eingesetzt. Irgendwie sind die gelieferten Werte nicht schlüssig, es kommt zu großen (nicht nachvollziehbaren) Problemen bei der Weiterverarbeitung. Alle Probleme liegen IMMER im Bereich 1 bis 2 Pixel.
Right + Bottom sind um 1 Pixel zu groß, und auch bei voll geöffnetem Fenster ohne Rahmen (ohne PopUp) sind die Koordinaten und Left + Top = 2 !!!
Nur bei PopUp (ohne Rahmen) fangen die Koordinaten korrekt bei 0,0 an.
Beispiel:
Wenn ich ein Fenster habe (z.B. Form), was keinen Rahmen (und daher auch keine Titelleiste) hat, und ich dieses Fenster maximiere (gnzer Bildschirm), dann würde ich erwarten, dass die Koordinaten Top,Left = 0,0 sind. Sind sie aber nicht, sondern 2,2
Right + Bottom sind grundsätzlich um 1 Px zu groß (z.B. Right - Left + 1 , also die Breite , ergibt 1025 !!!)
Kann ja sein, dass man das bei M$ nicht so eng sieht, ich brauche die Werte aber leider genau - und zwar zuverlässig. Wenn jemand einen Tipphat, danke.
***
EDIT: Ich verwende aus bestimmtem Grund Access 2000. Ich gehe aber davon aus, dass sich die API-Function 'GetWindowRect' nicht geändert hat.
Beitrag wurde zuletzt am 14.01.16 um 18:26:07 editiert. | |
Re: Warum liefert GetWindowRect falsche Daten? | | | Autor: schmidt34 | Datum: 14.01.16 23:53 |
| Weiß das wirklich keiner?
Oder sind APIs unmodern geworden? | |
Re: Warum liefert GetWindowRect falsche Daten? | | | Autor: schmidt34 | Datum: 16.01.16 08:03 |
| Danke Dieter. Welcher Rahmen soll denn mitgerechnet werden, wenn das Fenster keinen hat? | |
Re: Warum liefert GetWindowRect falsche Daten? | | | Autor: Blackbox | Datum: 21.01.16 18:28 |
| Hallo,
GetWindowRect() steht immer im Zusammenhang mit dem Screen.
Um die korrekten Werte zu bekommen muss die RECT-Struktur, die man mit dieser WinAPI bekommt, mit ClientToScreen() bzw. ScreenToClient() konvertiert werden. | |
Re: Warum liefert GetWindowRect falsche Daten? | | | Autor: schmidt34 | Datum: 23.01.16 23:07 |
| Das tue ich doch schon.
Die mit GetWindowRect() erhaltenen Koordinaten konvertiere ich mit ScreenToClient() vom OutsideWindow ins InsideWindow.
ABER:
Wenn GetWindowRect() bei maximiertem Fenster eine Fensterbreite von 1025 (!!!) liefert, habe ich damit ein Problem.
BEISPIEL 1:
Die Screen-Auflösung beträgt 1024x768.
Right - Left + 1 muss meiner Ansicht nach 1024 geben
GetWindowRect() liefert mir aber 1025 !!!
BEISPIEL 2:
Bei voll geöffnetem Fenster (maximiert, ohne Rahmen) muss Left,Top jeweils 0,0 sein.
GetWindowRect() liefert mir aber 2,2
Was rechnet Microsoft da für einen Bockmist?
Ich bezweifle, dass ich da was falsch mache.
Beitrag wurde zuletzt am 23.01.16 um 23:09:07 editiert. | |
| 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 |
|
|
Neu! sevDTA 3.0 Pro
SEPA mit Kontonummernprüfung
Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere 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
|
|