Español
Foro

Editar SubClassing

 

Ernst
¡Hola - Fragen, Fragen, y nochmals Fragen .....

el erste:
si yo Edit einfärbe con profanem Subclassing, se en Schließen des Hauptfensters Edit entfärbt (Code1); en Verwendung de nproc (Code2) restos Editar a para Ende gefärbt.
¿Por qué va el Farbe flöten - mach Yo qué falso ?

Code1:
 $H windows.ph
 $H messages.ph
Declarar brush&, dlg&, edit&
usermessages 16
set("FASTMODE",1)
Ventana de Estilo 26
Ventana 100,100-500,300
CLS RGB(212,208,200)
dlg& = Control("DIÁLOGO","",$54000000,50,200,200,20,%hwnd,0,%hInstance,0)
edit& = Crear("EDIT",dlg&,"",0,0,width(dlg&),height(dlg&))
setfocus(edit&)
subclass dlg&, 1

Mientras que 1

    Waitinput

    IF %Umessage = 16

        MessageBox("","",0)
        romper

    endif

EndWhile

subclass dlg&, 0
deleteobject brush&
End
' ----------------------------------------------------------------------------

SubClassProc

    If SubClassMessage(dlg&, ~WM_CTLCOLOREDIT)

        IF Brush&

            DeleteObject Brush&

        EndIf

        Brush& = ~CreateSolidBrush(RGB(255,255,170))
        ~SetBkMode(&swParam, ~TRANSPARENT)
        ~SetTextColor(&swParam,RGB(0,0,255))
        set("winproc",0)
        Volver Brush&

    EndIf

ENDPROC


Code2:
 {$iq}
 $H windows.ph
 $H messages.ph
Declarar brush&, dlg&, edit&, dlg_opc&
usermessages 16
set("FASTMODE",1)
Ventana de Estilo 26
Ventana 100,100-500,300
CLS RGB(212,208,200)
dlg& = Control("DIÁLOGO","",$54000000,50,200,200,20,%hwnd,0,%hInstance,0)
edit& = Crear("EDIT",dlg&,"",0,0,width(dlg&),height(dlg&))
setfocus(edit&)
dlg_opc& = ~SetWindowLong(dlg&,~GWL_WNDPROC, ProcAddr(dlg_CP,4))
setfocus(edit&)

Mientras que 1

    Waitinput

    IF %Umessage = 16

        MessageBox("","",0)
        romper

    endif

EndWhile

deleteobject brush&
End
' *******************************************************************************************************************

nProc dlg_CP

    parámetros wnd&, msg&, wp&, lp&
    global dlg_opc&, brush&

    IF brush&

        ~DeleteObject(brush&)

    Endif

    If msg& = ~WM_CTLCOLOREDIT

        brush& = ~CreateSolidBrush(RGB(255,255,170))
        ~SetBkMode(wp&, ~TRANSPARENT)
        ~SetTextColor(wp&,RGB(0,0,255))
        Volver brush&

    EndIf

    Volver ~CallWindowProc(dlg_opc&, wnd&, msg&, wp&, lp&)

ENDPROC

 
07.05.2016  
 



Weil el SubClassProc en el Vergleich a nProc sólo en el WaitInput aufgerufen se, en lugar de en egal welchem Programmteil. Anders dijo con nProcs 1:1/ verlustfreies natives SubClassing y el SubClassProc Interpreter-SubClassing. So ha una vez después de Tarea el Wahl des geeigneteren Mittels.

Tip: En nProc Usted necesita no Fastmode.
 
11.06.2016  
 




Ernst

Tip: En nProc Usted necesita no Fastmode.

Sobald Yo Fastmode entferne, erscheint Edit primero con weißem Hintergrund y se sólo después de el ersten Tastendruck o. Mausclick en el Ventana-Client-Zona gefärbt.
Abhilfe :
entonces erscheint Edit inmediatamente eingefärbt - oder hay una elegantere Solución?
 
13.06.2016  
 



Das Comportamiento es nachvollziehbar, como Usted el Control sólo erstellst con uno normalen wProc de XProfan - el el "weiß" características - y danach sólo una abweichende wProc para el Control festlegst aber el neue wProc sin Aufforderung fürs Neuzeichnen primero natürlich auch garnicht gerufen se. Normalerweise sería (igual) uno beim Erstellen des Controls (z.B. por createWindowEx-Función) el "abweichende" wProc angeben. Hier musst Usted nun also después de el Festlegen el neuen wProc el Control primero para Neuzeichnen bewegen o. para Auslösen el WM_CTLCOLOREDIT Nachricht. Probiere después de el gwl_wndProc also veces algo como como RedrawWindow(handle,0,0,0). Der Holzhammer esta wäre showwindow handle 0 y anschließend schowwindow handle 1. Usted puede auch sólo todos Controls redactar y neue gwl_wndprocs conjunto y danach todos Ventana para Neuzeichnen bewegen. Dann also Ventana versteckt erzeugen, Controls erzeugen, WndProcs conjunto, Ventana sichtbar hacer. Dann hast ganzen Neuzeichenkram auch erschlagen.

Tip: Como/ Si usted XPSE einsetzt, es el Tilde-Signo ~ para Apis no notwendig.

Referencia: Globals en nProc son readonly, Su Code also así no funktionsfähig. Tip: Nutze GWL_USERDATA para cada Control, a fin de una Extraspeicherhandle a platzieren en se darüber wiederum global Dinge como brush& a merken.
 
13.06.2016  
 




Ernst
Gracias para Info y Tip;
(el ~ verwende Yo sólo, como el APIs dadurch en el IDE farblich hervorgehoben voluntad)

Tip: Nutze GWL_USERDATA ...


tener mich veces con GWL_USERDATA intenta:
 {$iq}
 $H windows.ph
 $H messages.ph
Declarar brush&,dlg&, edit&
usermessages 16
Ventana de Estilo 26
Ventana 100,100-500,300
CLS RGB(212,208,200)
dlg& = Control("DIÁLOGO","",$54000000,50,200,200,20,%hwnd,0,%hInstance,0)
edit& = Crear("EDIT",dlg&,"",0,0,width(dlg&),height(dlg&))
brush& = ~CreateSolidBrush(RGB(255,255,170))
~setWindowLong(dlg&,~gwl_userData,~setWindowLong(dlg&,~gwl_wndProc,procaddr(dlg_CP)))
setfocus(edit&)

Mientras que 1

    Waitinput

    IF %Umessage = 16

        MessageBox("","",0)
        romper

    endif

EndWhile

deleteobject brush&
End
' *******************************************************************************************************************

nProc dlg_CP

    parámetros Wnd&, Msg&, wParam&, lParam&
    global brush&

    IF Msg& = ~WM_CTLCOLOREDIT

        ~SetBkMode(wParam&,~transparent)
        ~SetTextColor(wParam&,RGB(0,0,255))
        Volver brush&

    EndIf

    volver ~callWindowProc(~getWindowLong(wnd&,~gwl_userData),Wnd&, Msg&, wParam&, lParam&)

ENDPROC



..., a fin de una Extraspeicherhandle a platzieren ...

el durchschaue Yo no (cómo algo como macht). Yo tener me auch el Subclassing-Ejemplo  [...]  angesehen - el es para mich una gord-Knoten; Yo komm en no grüen Zweig...
 
13.06.2016  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

6.077 Views

Untitledvor 0 min.
RudiB.28.12.2021
H.Brill31.08.2021
Walter08.05.2021
Torben Nissen26.04.2020
Más...

Themeninformationen

Dieses Thema ha 2 subscriber:

Ernst (3x)
iF (2x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie