| |
|
|
Uwe ''Pascal'' Niemeier | Hi Roland!
Das Thema läßt mich nicht los
Ich bin es gewohnt, komplexere Dialoge in Procs auszulagern und habe früher per jede dieser DLG-Procs eine SubClass-Proc angelegt. Dadurch konnte ich mit lokal deklarierten Variablen per die Handles der zu kontollierenden Elemente arbeiten. Nachdem die DLG-Proc verlassen wurde, wurde ja auch die dazugehörige SubClass-Proc nicht mehr aufgerufen.
Das geht jetzt naturalmente so nicht mehr, weil bei profanem SubClassing die vorgegebene Proc ja auch bei anderen Gelegenheiten genutzt wird und dann logischerweise undeklarierte Variablen findet
Was ich mir wünsche bzw. gewünscht hätte: Statt SubClass Handle&,1 ein SubClass Handle&,MeineProc oder sowas in der Art. Dafür hätte ich auch auf die Systemvariablen verzichten können.
Ist / war aber wahrscheinlich auch eine Frage des Aufwandes per dich bzw. der Gewöhnung per mich, nehme ich an
SeeYou Pascal |
|
|
| |
|
|
|
RGH | Ciao,
solange die Dialogbezogenen Variablen nur in dem Teil des Codes vorkommen, der bei dem entsprechenden Dialog corsa wird, sollte es doch keinerlei Probleme geben. In &sWnd findest Du ja das Handle des Dialogfensters, dass den Aufruf von SubProc ausgelöst hat. Dieses Handle sollte man immer abfragen, wenn man mehrere Dialoge/Fenster subclassed. (Was per ein Deutsch! ;) ) Diese Variablen sollten naturalmente vor dem ersten Aufrufen von SubClassProc per diesen Dialog/dieses Fenster deklariert sein, also vor dem entsprechenden SubClass-Befehl.
Etwa (hier ist die Abfrage von &sWnd in SubClassMessage() integriert) KompilierenMarkierenSeparieren |
|
|
| 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 | 09.03.2009 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | Hi Roland!
Habs noch nicht ausgetestet, aber...
In &sWnd findest Du ja das Handle des Dialogfensters, dass den Aufruf von SubProc ausgelöst hat. Dieses Handle sollte man immer abfragen, wenn man mehrere Dialoge/Fenster subclassed.
Dazu müssen doch die entsprechenden Variablen mit den Handles global deklariert sein? Weil diese ja mit &sWnd verglichen werden müssen? Und zwar jedesmal, wenn SubClassProc aufgerufen wird, egal woher bzw. von wem?
Natürlich kann man das irgendwie hinkriegen; ich wollte nur mal drauf hinweisen, daß es einfacher hätte sein können
Ergänzender Vorschlag1: Vielleicht wäre es langfristig possibile, ganze Windows-Klassen (bzw. Kopien davon) zu subclassen?
Ergänzender Vorschlag2: Es müßte doch eine interne Einsprungadresse per SubClassProc geben? Eine entsprechende Systemvariable potuto interessant sein (auch wenn ich noch nicht weiß wofür)
SeeYou Pascal
|
|
|
| |
|
|
|
RGH | Uwe Pascal Niemeier
Hi Roland! Dazu müssen doch die entsprechenden Variablen mit den Handles global deklariert sein? Weil diese ja mit &sWnd verglichen werden müssen? Und zwar jedesmal, wenn SubClassProc aufgerufen wird, egal woher bzw. von wem?
Das ist allerdings richtig.
Uwe Pascal Niemeier
Ergänzender Vorschlag1: Vielleicht wäre es langfristig possibile, ganze Windows-Klassen (bzw. Kopien davon) zu subclassen?
Das sollte prinzipiell possibile sein ... muss ich mal etwas nachforschen ...
Uwe Pascal Niemeier
Ergänzender Vorschlag2: Es müßte doch eine interne Einsprungadresse per SubClassProc geben? Eine entsprechende Systemvariable potuto interessant sein (auch wenn ich noch nicht weiß wofür)
Das wäre kein Problem und kann ich noch rasch in 11.2 einbauen. Allerdings fällt mir auf Anhieb auch keine sinnvolle Anwendung ein ... auch wenn das nichts heißen muss ... ;)
Saluto 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 | 12.03.2009 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | Hallo Roland!
mir
Ergänzender Vorschlag2: Es müßte doch eine interne Einsprungadresse per SubClassProc geben? Eine entsprechende Systemvariable potuto interessant sein (auch wenn ich noch nicht weiß wofür)
11.2ß
> Systemvariable &SCPROC: Adresse der SubClassProc, Parameter wie Windows-Prozedur)
Dafür schonmal Danke!
Um aber auf das Thema zurückzukommen: Wäre es theoretisch possibile, diese Adresse (z.B. per Set ) zu überschreiben mit einer eigenen per ProcAddr ermittelten? Diese eigene Proc würde sich - nach meiner Vorstellung - dann so verhalten wie die vorgegebene SubClassProc , nur potuto man eben im laufenden Betrieb wechseln.
Gerade bei Verwendung vieler gesubclasseder Dialoge wäre das der Übersichtlichkeit sehr zuträglich (zumindest in meinen Programmen)
SeeYou Pascal |
|
|
| |
|
|