SendMessageA Absonderlichkeiten
Moderator: Moderatoren
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2832
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 98 Mal
- Danksagung erhalten: 13 Mal
SendMessageA Absonderlichkeiten
Hallo,
ich schlage mich (mal wieder) mit dem Problem herum, in einem XbpDialog() mehr (flächenmässig) unterzubringen, als die :drawingArea gross ist. Das funktioniert nun auch einigermassen, allerdings mit dem :show() ist der untere Bereich der :drawingArea sichtbar, und eigentlich soll der obere Bereich sichtbar sein:
///=== Title Bar
Zeile 1
Zeile 2
Zeile 3
Zeile 4
Zeile 5
/// === unterer Rand
Wenn die Grösse des XbpDialogs die Anzeige von drei Zeilen zu lässt, sehe ich folgendes:
/// === Title Bar
Zeile 3
Zeile 4
Zeile 5
/// === unterer Rand
Gut, dann gibt es
SendMessageA(oDlg:getHWND(), WM_VSCROLL, SB_TOP, 0)
um die Anzeige so zu haben:
/// === Title Bar
Zeile 1
Zeile 2
Zeile 3
/// === unterer Rand
Soweit, so gut. Nun kommt es bei einem vom fünf Aufrufen (aber auch schon zehn mal nacheinander) vor, dass die Anzeige so aussieht:
/// === Title Bar
(leer)
(leer)
(leer)
/// === unterer Rand
(viele, viele, viele Leerzeilen)
Zeile 1 bis Zeile 5 "gestaucht"
d.h. wenn ich herunterscrolle, ist die :drawingArea ein Vielfaches der eigentlichen Grösse "gross".
Ich habe das im Debugger mal kontrolliert, die Werte von XbpDialog und :drawingArea ist immer gleich, egal ob die Anzeige korrekt ist oder nicht (letztes Beispiel). Das Problem tritt auf mit dem Ausführen des SendMessageA.
Passieren tut dies auf Rechnern mit Windows 7, 64 bit Version.
Hat einer von Euch eine Erklärung oder einen besseren Lösungsansatz?
Gruss,
Georg
ich schlage mich (mal wieder) mit dem Problem herum, in einem XbpDialog() mehr (flächenmässig) unterzubringen, als die :drawingArea gross ist. Das funktioniert nun auch einigermassen, allerdings mit dem :show() ist der untere Bereich der :drawingArea sichtbar, und eigentlich soll der obere Bereich sichtbar sein:
///=== Title Bar
Zeile 1
Zeile 2
Zeile 3
Zeile 4
Zeile 5
/// === unterer Rand
Wenn die Grösse des XbpDialogs die Anzeige von drei Zeilen zu lässt, sehe ich folgendes:
/// === Title Bar
Zeile 3
Zeile 4
Zeile 5
/// === unterer Rand
Gut, dann gibt es
SendMessageA(oDlg:getHWND(), WM_VSCROLL, SB_TOP, 0)
um die Anzeige so zu haben:
/// === Title Bar
Zeile 1
Zeile 2
Zeile 3
/// === unterer Rand
Soweit, so gut. Nun kommt es bei einem vom fünf Aufrufen (aber auch schon zehn mal nacheinander) vor, dass die Anzeige so aussieht:
/// === Title Bar
(leer)
(leer)
(leer)
/// === unterer Rand
(viele, viele, viele Leerzeilen)
Zeile 1 bis Zeile 5 "gestaucht"
d.h. wenn ich herunterscrolle, ist die :drawingArea ein Vielfaches der eigentlichen Grösse "gross".
Ich habe das im Debugger mal kontrolliert, die Werte von XbpDialog und :drawingArea ist immer gleich, egal ob die Anzeige korrekt ist oder nicht (letztes Beispiel). Das Problem tritt auf mit dem Ausführen des SendMessageA.
Passieren tut dies auf Rechnern mit Windows 7, 64 bit Version.
Hat einer von Euch eine Erklärung oder einen besseren Lösungsansatz?
Gruss,
Georg
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- brandelh
- Foren-Moderator
- Beiträge: 15706
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: SendMessageA Absonderlichkeiten
Hi,
dass du den unteren Bereich siehst statt dem oberen liegt wohl daran, dass links unten 0,0 ist.
Das kann man ändern
Danach hat man viel ruhigere Bildschirme und links oben ist 0,0 ... suche man nach TOP LEFT ORIGIN.
dass du den unteren Bereich siehst statt dem oberen liegt wohl daran, dass links unten 0,0 ist.
Das kann man ändern
Danach hat man viel ruhigere Bildschirme und links oben ist 0,0 ... suche man nach TOP LEFT ORIGIN.
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15706
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: SendMessageA Absonderlichkeiten
Und hier die nötige Zeile beim XbpDialog():new() oder create():
Code: Alles auswählen
aPP := { { XBP_PP_ORIGIN , XBP_ORIGIN_TOPLEFT }, ... }
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2832
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 98 Mal
- Danksagung erhalten: 13 Mal
Re: SendMessageA Absonderlichkeiten
Hallo, Hubert -
vielen Dank für den Tipp, aber ich habe mich inzwischen recht gut an das "Standard-Koordinatensystem" gewöhnt, und müsste zuviel anpassen.
Gruss,
Georg
vielen Dank für den Tipp, aber ich habe mich inzwischen recht gut an das "Standard-Koordinatensystem" gewöhnt, und müsste zuviel anpassen.
Gruss,
Georg
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: SendMessageA Absonderlichkeiten
soweit war ich auch ...georg hat geschrieben:ich schlage mich (mal wieder) mit dem Problem herum, in einem XbpDialog() mehr (flächenmässig) unterzubringen, als die :drawingArea gross ist. Das funktioniert nun auch einigermassen ...
Frage : sind deine XbParts "direkt" auf der o:drawingArea ?
ich habe das ganze dann durch eine Static > o:drawingArea gelöst wobei ich auch einen "eigenen" Scrollbar in der Class habe und nicht den vom XbpDialog
gruss by OHR
Jimmy
Jimmy
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2832
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 98 Mal
- Danksagung erhalten: 13 Mal
Re: SendMessageA Absonderlichkeiten
Hallo, Jimmy -
Deine Überlegung ist richtig. Ich habe auch ein wenig über Deinen Ansatz nachgedacht, und er klingt pfiffig. Allerdings muss dann aber der XbpDialog eine fixe Grösse haben, weil Du sonst Gefahr läufst, zwei Scrollbars an einer Seite zu haben?
Gruss,
Georg
Deine Überlegung ist richtig. Ich habe auch ein wenig über Deinen Ansatz nachgedacht, und er klingt pfiffig. Allerdings muss dann aber der XbpDialog eine fixe Grösse haben, weil Du sonst Gefahr läufst, zwei Scrollbars an einer Seite zu haben?
Gruss,
Georg
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: SendMessageA Absonderlichkeiten
wenn ein XbPart > o:drawingArea ist sollte ja ein Scrollbar erscheinen, wenn nicht kann man ihn "zwingen" mitgeorg hat geschrieben:... weil Du sonst Gefahr läufst, zwei Scrollbars an einer Seite zu haben?
Code: Alles auswählen
oDlg:drawingArea:scrollbars := XBP_SCROLLBAR_VERT
Code: Alles auswählen
oDlg:drawingArea:scrollbars := XBP_SCROLLBAR_NONE
gruss by OHR
Jimmy
Jimmy