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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Ricardo Passians
25/10/2003 - 13:50 | Informe spam
Gracias, yo tambien buscaba algo asi.


"KAKATUO" wrote in message
news:bnbds9$5ia$04$
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


Respuesta Responder a este mensaje
#3 jose
28/10/2003 - 10:34 | Informe spam
Funciona perfectamente.

Una ligerísima correción :

DWORD lParam = this->GetSafeHwnd();


DWORD lParam = (LPARAM)this->GetSafeHwnd();


Muchas gracias,

Jose

"KAKATUO" wrote in
news:bnbds9$5ia$04$:

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.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida