| |
|
|
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 für jede dieser DLG-Procs eine SubClass-Proc angelegt. Dadurch konnte ich mit lokal deklarierten Variablen für 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 natürlich 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 für dich bzw. der Gewöhnung für mich, nehme ich an
SeeYou Pascal |
|
|
| |
|
|
|
RGH | Hallo,
solange die Dialogbezogenen Variablen nur in dem Teil des Codes vorkommen, der bei dem entsprechenden Dialog ausgeführt 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 für ein Deutsch! ;) ) Diese Variablen sollten natürlich vor dem ersten Aufrufen von SubClassProc für diesen Dialog/dieses Fenster deklariert sein, also vor dem entsprechenden SubClass-Befehl.
Etwa (hier ist die Abfrage von &sWnd in SubClassMessage() integriert) KompilierenMarkierenSeparieren oder KompilierenMarkierenSeparieren oder gar KompilierenMarkierenSeparieren 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 | 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 möglich, ganze Windows-Klassen (bzw. Kopien davon) zu subclassen?
Ergänzender Vorschlag2: Es müßte doch eine interne Einsprungadresse für SubClassProc geben? Eine entsprechende Systemvariable könnte 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 möglich, ganze Windows-Klassen (bzw. Kopien davon) zu subclassen?
Das sollte prinzipiell möglich sein ... muss ich mal etwas nachforschen ...
Uwe Pascal Niemeier
Ergänzender Vorschlag2: Es müßte doch eine interne Einsprungadresse für SubClassProc geben? Eine entsprechende Systemvariable könnte 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 ... ;)
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 | 12.03.2009 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | Hallo Roland!
mir
Ergänzender Vorschlag2: Es müßte doch eine interne Einsprungadresse für SubClassProc geben? Eine entsprechende Systemvariable könnte 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 möglich, 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 könnte 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 |
|
|
| |
|
|