Français
Source/ Codesnippets

Nativ Nsubclass Subclassing Xpse

 

Nico
Madysa
Habe mir la fois cela Subclassing avec XPSEs NProcs quelque chose bequemer gestaltet; peut-être gefällts oui quelqu'un.
KompilierenMarqueSéparation
 {$iq}
usermem&: frei verwendbarer Speicher, auf den man in der Subclassprozedur zugreifen kann
Zugriff über Adresse GetWindowLong(sWnd&,~WK_USERDATA)
wnd&: Handle des subzuclassenden Controls
paddr&: Adresse der Subclassprozedur; über ProcAddr(meineProzedur,4) zu erhalten
Um das Subclassing abzuschalten einfach für paddr&=0 aufrufen; siehe Beispiel

{nproc nSubclass

    nproc nSubclass

        parameters usermem&,wnd&,paddr&
        declare owp&,al&

        if paddr& Anschalten

            eigentliches Subclassing; Neue WindowProc wird eingeschoben
            owp& = SetWindowLong(wnd&,gwl_wndProc,paddr&)
            Bereich wird angelegt
            al& = dim(4 + usermem&)
            Am Offset 0 wird in jedem Falle die Adresse der alten WindowProc gemerkt
            Long al&,0 = owp&
            Adresse des Bereiches wird gemerkt
            SetWindowLong(wnd&,gwl_userData,al&)
            else Ausschalten
            Bereichsadresse zurückholen
            al& = GetWindowLong(wnd&,gwl_userData)
            Alte WindowProc wieder einsetzen
            SetWindowLong(wnd&,gwl_wndProc,Long(al&,0))
            Bereich freigeben
            Dispose(al&)

        endif

        return 1

    endproc

    ---BEISPIEL-----------
    Subclassprozedur für das Hauptfenster

    {nproc hWnd.Sub

        nproc hWnd.Sub

            parameters wnd&,msg&,wParam&,lParam&

            if msg& = WM_CLOSE

                Hauptprogramm mit einer Usermessage benachrichtigen, dass das Programm beendet werden soll
                SendMessage(%hWnd,WM_USER+1,0,0)
                return 0

            else

                in allen anderen Fällen die normale Windowproc aufrufen
                Am Offset 0 legt nSubclass die Adresse der alten WindowProc ab
                return CallWindowProc(Long(GetWindowLong(wnd&,gwl_userData),0),wnd&,msg&,wParam&,lParam&)

            endif

        endproc

        Window 0,0 - %MaxX,%MaxY
        nSubclass(0,%hWnd,ProcAddr(hWnd.Sub,4)) Subclassing anschalten
        Usermessage, über die die Subclassproc mit dem Hauptprogramm kommuniziert
        Usermessages WM_USER+1
        Hauptschleife

        while 1

            waitinput
            Wenn nachricht von der Subclassproc kommt, ist Schicht im Schacht.

            if %UMessage = WM_USER+1

                MessageBox("Ende im Gelände!","Aus die Maus!",0)
                break

            endif

        wend

        Subclassing abschalten, um den Bereich hinter gwl_userData zu disposen
        nSubclass(0,%hWnd,0)
        end

So peux on cela native Subclassing presque genauso comment cela xprofane verwenden. Zudem ist on pas plus sur une Subclassproc eingeschränkt.
je hoffe, il y a aucun faute drin et c'est réglé kommentiert.
 
Nico Madysa
23.02.2010  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

3.351 Views

Untitledvor 0 min.
Andre Rohland13.06.2019
rquindt27.08.2016
Ernst06.05.2016
Rc24.12.2015
plus...

Themeninformationen

cet Thema hat 1 participant:

Nico Madysa (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie