Italia
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 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
 
09.03.2009  
 




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
SubClassProc

    If SubClassMessage(meinDialog1&, meineMessage1&)

        <...>

    ElseIf SubClassMessage(meinDialog2&, meineMessage2&)

        <...>

    Else

        <...>

    EndIf

KompilierenMarkierenSeparieren
SubClassProc

    If &sWnd = meinDialog1&

        <...>

    ElseIf &sWnd = meinDialog2&

        <...>

    Else

        <...>

    EndIf

EndProc


oder gar
KompilierenMarkierenSeparieren
SubClassProc

    Select &sWnd

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

    EndSelect

EndProc


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



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

2.693 Views

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

Themeninformationen

Dieses Thema hat 2 subscriber:

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


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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