Deutsch
Wünsche und Anregungen

Oberwunsch: Fensterskalierung

 
- Seite 1 -


Hallo Roland,

seit Version 1 von [X]Profan[²] hat es ein dickes Manko wie ich zur Zeit höchstens noch von uralten Java(tm)-Anwendungen kenne: Programme können nicht auf Fensterskalierung reagieren während das Fenster skaliert wird.

User könnten fertige Programme als minderwertig einstufen - viele XProfaner nutzen deshalb Steife Fenster.

Es sollte möglich sein das dieser Code
KompilierenMarkierenSeparieren
den Inhalt nicht erst nach der Skalierung ausführt. Das Setzen einer entsprechenden UserMessage nutzt insofern nichts da die Messages WaitInput auch erst nach der Skalierung durchbrechen.

Bitte finde hierfür eine Lösung - thread.pcu oder subClassen von hWnd sind problematisch wegen dem ProcAddr-Problem, also nicht empfehlenswert. Waitinput durchbrechen bei wm_sizing als UserMessage wäre ausreichend. Ebenso ist festzustellen das wm_erasebkgnd als UserMessage auf hWnd Wunder bewirkt - bei gesetzter UserMessage flimmert hWnd nicht beim Skalieren. Ist vielleicht ne Brush-Sache - sollte aber mal angeschaut werden.
 
10.01.2008  
 



 
- Seite 1 -



Jörg
Sellmeyer
Sieht sehr cool aus. Eine Frage habe ich aber noch:
Im waitinput bedeuted wahrscheinlich, daß Du in Deiner WaitInput-Prozedur das Auslesen der Subclassmessages erledigst, oder?
Ist das denn jetzt in jedem WaitInput so, nur auf das Hauptfenster bezogen, oder kann/soll/muß man das irgendwie ausschalten, wenn ich z.B. ein Dialogfenster mit eigener Schleife und WaitInput öffne?
Gruß
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
18.01.2008  
 



 
- Seite 2 -


@Jörg: In jedem Waitinput - unabhängig wo dieses im Code steht und unabhängig vom Control, es hat also mit dem Hauptfenster hWnd nicht wirklich etwas zu tun. (auch wenn Roland intern vielleicht dort ansetzt)

SubClassMessage hat ja zum Glück seinen ersten Parameter für das betrachtete Control!
 
18.01.2008  
 




Jac
de
Lad
Besser wäre noch SubClass als Funktion statt als Prozedur und als Rückgabewert den vorherigen Wert. Oder irgendwie eine Funktion zum Ermitteln, ob man ein Fenster bereits subclassed,
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
18.01.2008  
 




Frank
Abbing
@Roland:
 
18.01.2008  
 



In welchem Fall kann das beispielsweise nützlich sein Jac?

@Alle: Für das Feature sollten wir Roland paar Stars zukommen lassen jau?! Ich fang an...
 
18.01.2008  
 




Jac
de
Lad
Wenn man eine oder mehrere Incs/Units benutzt, die eventuell oder sicher subclassen.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
18.01.2008  
 




Jörg
Sellmeyer
So wie ich das im Moment sehe, gibt es nur die eine SubClassProc und die sollte dann in einer Inc/Unit nix zu suchen haben. Oder woher soll XProfan wissen, welche SubClassProc nu gemeint ist?
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
18.01.2008  
 




Jac
de
Lad
Aso...
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
18.01.2008  
 




RGH
Mal schauen, ob ich einige der aufgekommenen Fragen beantworten kann.

Subclassing funktioniert in jedem WaitInput. Am WaitInput selbst habe ich nichts geändert, da ich schon jehe rein Flag setze, an dem ich erkenne, dass ich mich in WaitInput befinde.
Es gibt in XProfan exakt eine Fenster-Prozedur fürs Subclassing
Mit dem Befehl SubClass Win& wird dem Fenster diese Prozedur als Fensterprozedur untergejubelt und gleichzeitig in einer Tabelle die Original-Fensterprozedur gespeichert.
In der neuen Fensterprozedur wird nun überprüft, ob ich in WaitInput bin. Wenn nicht, wird über die Tabelle die ursprüngliche Fensterprozedur des Fensters ermittelt und aufgerufen. Wenn ich im Waitinput bin, wird die SUBCLASSPROC aufgerufen. Sollte die Message nicht über SubClassMessage(Win&, Msg&) behandelt worden sein, wird auch jetzt die Originalfensterprozedzur aufgerufen.

Wenn man wissen will, in welche, von mehreren WaitInputs sich befindet, kann man ja globale Variablen als Flags benutzen und diese in der SUBCLASSPROC abfragen. Außerdem kann mit mit SUBCLASS Win&,0 jederzeit das SubClassing für ein Fenster oder Controll ausschalten und später wieder mit SUBCLASS Win&,1 einschalten.
BTW: Ich empfehle allerdings immer wieder, im Programm nur ein WaitInput zu haben! Da man nie weiß, wo der User als Nächstes inklickt, wäre es schon doof, wenn man sich gerade in dem Waitinput befindet, das davon nichts mitbekommt.

Es darf nur eine SUBCLASSPROC geben. Bei einer zweiten im Programm erfolgt eine Fehlermeldung. (Bei der Gelegenheit habe ich auch eine Fehlermeldung eingebaut wenn ERRORPROC ein weiteres Mal auftaucht.) Eine Fehlermeldung erfolgt auch, wenn SubClassing eingeschaltet ist und keine SUBCLASSPROC existiert.

@iF: Ich könnte jetzt eine angepaßte Version des Lexers gebrauchen, bei dem auch das Paar SUBCLASPROC-ENDPROC funktioniert (so wie ERRORPROC-ENDPROC).

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
18.01.2008  
 




RGH
Hallo,

ich habe das Listing weiter oben noch etwas angepaßt, so dass jetzt nichts mehr flackert .... zumindest nicht unter Windows XP und folgende.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
21.01.2008  
 



Habs getestet - tolle Sache!

Einen bug kann ich jedoch erkennen. Wenn man das Fenster sehr zügig zurechtruppt dann kann man erkennen das die Skalierung immer einen Schritt zurückliegt. Vlt. vergessener Stack oder width/height nicht aktualisiert. Lässt man die Maustaste dann los, dann aktualisiert sichs korrekt.
 
21.01.2008  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

10.397 Betrachtungen

Unbenanntvor 0 min.
Peter Max Müller22.10.2017
E.T.02.01.2016
ByteAttack09.08.2015
Normann Strübli22.08.2014
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie