PreTranslateMessage

10/10/2003 - 13:48 por Sergio | Informe spam
Alguien sabe como tratar BN_CLICKED en la función PreTranslateMessage?
Necesito obtener el id del boton pulsado, cuando este es de un array de
botones, puede que no sea BN_CLICKED a quien tenga que tratar, lo he
intentado con WM_LBUTTONUP, que es justo lo que quiero saber, que botón ha
sido soltado, pero ninguna de las propieades de la variable pMsg tiene el id
del boton, o al menos eso creo.

Preguntas similare

Leer las respuestas

#1 Hernán
10/10/2003 - 21:27 | Informe spam
"Sergio" Escribía:

Alguien sabe como tratar BN_CLICKED en la función PreTranslateMessage?
Necesito obtener el id del boton pulsado, cuando este es de un array de
botones, puede que no sea BN_CLICKED a quien tenga que tratar, lo he
intentado con WM_LBUTTONUP, que es justo lo que quiero saber, que botón ha
sido soltado, pero ninguna de las propieades de la variable pMsg tiene el id
del boton, o al menos eso creo.




La notificación del que el botón ha sido soltado la recibe el parent en
su WM_COMMAND.

Ahora, la existencia de BN_CLICKED debe responder a una especie de
conjura semántico-metafísica. Ahora, nadie que yo conozca testea este
bitflag (de hecho no existe ya que el valor expandido por la macro es
0), simplemente se parsea el identificador del control

case WM_COMMAND:
if (LOWORD(wParam) == ID_BOTON){}
break;


Por supuesto HIWORD(wParam)== 0 ó BN_CLICKED

Hernán (27)
quilmes.ar
Respuesta Responder a este mensaje
#2 Hernán
10/10/2003 - 22:06 | Informe spam
Hernán Escribía:


Ahora, la existencia de BN_CLICKED debe responder a una especie de
conjura semántico-metafísica.



Bueno, no tan así. Si el botón es BS_NOTITY entonces si vale el
BN_CLICKED. Lo que en realidad BN_CLICKED significa es que no se trata
de una notificación...

case WM_COMMAND:
switch(LOWORD(wParam))
case ID_BOTON1:
switch (HIWORD(wParam))
case BN_CLICKED:
case BN_XXXX:

Hernán (27)
quilmes.ar
Respuesta Responder a este mensaje
#3 Conversión Magro
12/10/2003 - 13:05 | Informe spam
Alguien sabe como tratar BN_CLICKED en la función


PreTranslateMessage?
Necesito obtener el id del boton pulsado, cuando este es


de un array de
botones, puede que no sea BN_CLICKED a quien tenga que


tratar, lo he
intentado con WM_LBUTTONUP, que es justo lo que quiero


saber, que botón ha
sido soltado, pero ninguna de las propieades de la


variable pMsg tiene el id
del boton, o al menos eso creo.


.




Hola,

Si tienes un array de botones, supongo que has manipulado
a mano el dodataexchange para procesarlos en un array, no?.
Hay una forma muy estandar y elegante, en mi opinión, de
hacer lo que quieres:
Haz que todos los botones respondan al onClick, con la
misma función,
ie: OnArrayButtonClick(...

Dentro de este message handler, haz lo siguiente:

CButton *auxBtn;

auxBtn = this->GetFocus(); // El boton pulsado...
if (auxBtn != NULL)
{
switch (auxBtn->GetDlgCtrlID())
{
case IDC_BUTTON1:
case IDC_BUTTON2:
case IDC_BUTTONN
}
}

Con esto procesas todos los click del array de botones
en la misma función sabiendo cual de ellos ha sido
pulsado, no te parece?

Un saludo.
Respuesta Responder a este mensaje
#4 Sergio
13/10/2003 - 17:30 | Informe spam
Muchas gracias por la ayuda. No he usado exactamente tu código, tal y como
me habias dicho, pero me ha "inspirado". Lo que necesitaba era la función
GetDlgCtrlID(); pero no me acordaba siquiera de que existia.
Lo que he hecho ha sido:

.
.
.
int id = auxBtn->GetDlgCtrlID();
if (id >= IDC_BUTTON3 && id <= IDC_BUTTON4) { //Así se que esta dentro
del rango
.
.
.
boton[id - IDC_BUTTON3].capturado = false; // Así el número que le paso
esta siempre ente 0 y el numero máximo del array
OnBtnClickedArray(id);
.
.
.
}
Respuesta Responder a este mensaje
#5 Sergio
13/10/2003 - 17:34 | Informe spam
No he conseguido que la propiedad pMsg->message de la función
PreTransalteMessage(pMsg) responda a WM_COMMAND, aunque no te preocupes,
agradezco tu interes pero ya he conseguido solucionar mi problema. El modo
que he usado está en el otro thread.
Gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida