Simular la pulsación de un botón

24/10/2003 - 15:01 por jose | Informe spam
Hola,

Estoy realizando una aplicación con MFC's y me ha surgido el siguiete
problema:

Tengo un control (CMiControl) que contiene un checbox (por ejemplo).
Quiero que cuando se pulse el checkbox de CMiControl (u otra interación)
mi control envíe el mensaje BN_CLICKED (como si se hubira pulsado un
botón), para que así el diálogo que contiene a CMiControl pueda procesar
el mensaje.

Así he creado la función

void CMiControl::LanzarClick()
{
GetOwner()->PostMessage(BN_CLICKED, (WPARAM)GetDlgCtrlID(), (LPARAM)
this->m_hWnd);
}

Y la llamo, en este ejemplo cuando se pulsa el checkbox (podría ser en
otro evento).

El caso es que el diálogo que contiene CMiControl nunca recibe el mensaje
BN_CLICKED.

¿Alguna idea de dónde puede estar el fallo?

Muchas gracias y un saludo,

Jose
 

Leer las respuestas

#1 KAKATUO
24/10/2003 - 16:44 | Informe spam
Prueba con:

void CMiControl::LanzarClick()
{
WORD wNotifyCode = BN_CLICKED;
WORD wID = GetDlgCtrlID();
DWORD wParam = MAKELPARAM(wID, wNotifyCode);
DWORD lParam = this->GetSafeHwnd();

GetOwner()->PostMessage(WM_COMMAND, wParam, lParam);
}

Saludos.

"jose" escribió en el mensaje
news:
Hola,

Estoy realizando una aplicación con MFC's y me ha surgido el siguiete
problema:

Tengo un control (CMiControl) que contiene un checbox (por ejemplo).
Quiero que cuando se pulse el checkbox de CMiControl (u otra interación)
mi control envíe el mensaje BN_CLICKED (como si se hubira pulsado un
botón), para que así el diálogo que contiene a CMiControl pueda procesar
el mensaje.

Así he creado la función

void CMiControl::LanzarClick()
{
GetOwner()->PostMessage(BN_CLICKED, (WPARAM)GetDlgCtrlID(), (LPARAM)
this->m_hWnd);
}

Y la llamo, en este ejemplo cuando se pulsa el checkbox (podría ser en
otro evento).

El caso es que el diálogo que contiene CMiControl nunca recibe el mensaje
BN_CLICKED.

¿Alguna idea de dónde puede estar el fallo?

Muchas gracias y un saludo,

Jose

Preguntas similares