Enganchar EN_CHANGE en el diálogo para la subclasificación de CEDIT
Tengo mi propia subclase de clase para CEDIT de la siguiente manera:
class MyEdit : public CEdit....
La he subclasificado en el procedimiento DoDataExchange
mediante DDX_control
.
En esta clase subclasificada, engancho los eventos ON_CHAR
y ON_CHANGE
(MyEdit::OnChar, MyEdit::OnChange
).
Necesito enganchar el evento ON_CHANGE
también en el diálogo padre, pero con la clase subclase no funciona.
¿Existe alguna forma de enviar manualmente un mensaje desde MyEdit::OnChange
al diálogo?
davy.ai
Sí, es posible enviar manualmente un mensaje desde
MyEdit::OnChange
al diálogo padre. Puedes utilizar la funciónSendMessage
para enviar un mensaje a la ventana padre con el mensajeWM_COMMAND
y el código de notificaciónEN_CHANGE
.Aquí tienes un ejemplo de código:
En este código, primero llamamos a la implementación de la clase base
OnChange
para asegurarnos de que se ejecuta cualquier otra funcionalidad que proporcione. Luego, obtenemos el identificador de la ventana padre utilizando la funciónGetParent
y enviamos el mensajeWM_COMMAND
a través deSendMessage
. La macroMAKEWPARAM
crea el valorwParam
combinando el ID de control del control de edición con el código de notificaciónEN_CHANGE
. El valorLPARAM
se establece en el identificador del control de edición utilizandom_hWnd
.Al enviar este mensaje manualmente, el diálogo padre recibirá la notificación
EN_CHANGE
como si hubiera sido enviada por el control de edición mismo.