Deutsch
Wünsche und Anregungen

Wunsch: SubClass-Prozedur selbst bestimmen

 

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
 
09.03.2009  
 




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
SubClassProc

    If SubClassMessage(meinDialog1&, meineMessage1&)

        <...>

    ElseIf SubClassMessage(meinDialog2&, meineMessage2&)

        <...>

    Else

        <...>

    EndIf

EndProc


oder
KompilierenMarkierenSeparieren
SubClassProc

    If &sWnd = meinDialog1&

        <...>

    ElseIf &sWnd = meinDialog2&

        <...>

    Else

        <...>

    EndIf

EndProc


oder gar
KompilierenMarkierenSeparieren
SubClassProc

    Select &sWnd

        Case meinDialog1&
        <...>
        Case meinDialog2&
        <...>
        Otherwise
        <...>

    EndSelect

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
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
 
12.03.2009  
 




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
 
21.03.2009  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.688 Betrachtungen

Unbenanntvor 0 min.
H.Brill07.02.2019
Jörg Sellmeyer16.05.2018
Ernst02.03.2015

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Uwe ''Pascal'' Niemeier (3x)
RGH (2x)


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