Opcion de menu desactivada

09/07/2005 - 21:42 por JLK | Informe spam
Hola
Cuando utilizas el AppWizard para crear un projecto SDI o MDI se crea una
especie de esqueleto
de lo que será la aplicación, se crea el menú con las opciones más
elementales. Entre ellas las opciones
de "copiar", "pegar" etc..
Bien estas opciones de "cortar-copiar-pegar" en principio se muestran
desactivadas y cuando
se implementa un manejador para alguna de ellas, entonces es cuando se
muestra activa dicha opción de menú.

MI PREGUNTA:
¿Cual es el mecanismo que utiliza VC++ para hacer esto, es decir para
desactivar una opción hasta que no
se implemente un manejador que procese el mensaje enviado al elegir dicha
opción.?
O es en realidad el sistema operativo(en mi caso Windows) el que hace esto??

Gracias por anticipado y...
Un saludo para todos.

JLK.

Preguntas similare

Leer las respuestas

#1 Hernán
10/07/2005 - 01:29 | Informe spam
"JLK" escribía:

Hola
Cuando utilizas el AppWizard para crear un projecto SDI o MDI se crea una
especie de esqueleto
de lo que será la aplicación, se crea el menú con las opciones más
elementales. Entre ellas las opciones
de "copiar", "pegar" etc..
Bien estas opciones de "cortar-copiar-pegar" en principio se muestran
desactivadas y cuando
se implementa un manejador para alguna de ellas, entonces es cuando se
muestra activa dicha opción de menú.

MI PREGUNTA:
¿Cual es el mecanismo que utiliza VC++ para hacer esto, es decir para
desactivar una opción hasta que no
se implemente un manejador que procese el mensaje enviado al elegir dicha
opción.?
O es en realidad el sistema operativo(en mi caso Windows) el que hace esto??

Gracias por anticipado y...
Un saludo para todos.

JLK.




Tu programa es quien lo hace. El cuando lo elegís vos.

Para el item "pegar", puedes hacer un query en el _init_menú_,
preguntando al clipboard si contiene data en un formato que tu
aplicación maneje y, según sea la respuesta, habilitar o inhabilitar
el item. O puedes convertir tu programa en un visor del portapapeles,
entonces cada vez que ocurra un cambio va a ser notificado y allí
mismo puedes habilitar o inhabilitar el item, según haya data pegable.

Para el "cortar-copiar", el usuario tiene que poder seleccionar data
cortable/copiable (el clipboard es user-driven). Si lo hizo, lo
habilitas, sino no. ¿Cuándo? cuando hace la selección o durante el
WM_INITMENU[POPUP]. Cuando vos quieras.

Si tu programa tiene una toolbar que duplica a estos items del menú,
lo lógico es hacer los cambios al toque y no en el momento de
desplegar el menú.
Respuesta Responder a este mensaje
#2 JLK
10/07/2005 - 06:48 | Informe spam
Gracias por la respuesta, aunque no sea lo que ando buscando.

Veras , a ver si me explico mejor.
Yo ya he implementado manejadores para esos mensajes de "cortar-pegar" etc..

El AppWizard crea el esqueleto de la aplicación y por lo tanto crea un menú
con las opciones
más comunes en todas las aplicaciones.
Crea los Items de cortar y pegar.
Si tu no haces nada más y compilas la aplicación tal cual la deja AppWizard
esos Items permanecen
desactivados (el usuario no puede elegirlos).
Yo luego implemento una función que maneje esos mensajes(aunque esa función
no haga nada)
pero el hecho de crear una función para esos mensajes hace que ahora SI se
activen y el usuario
puede elegir en el menú las opciones de cortar-pegar (aunque no hagan nada
porque la función que
maneje esos mensajes no haga nada).

¿¿Lo que yo me pregunto es cual es mecanismo que utiliza VC++ para
desactivar esas opciones
hasta que no se implemente una función que maneje esos mensajes.??
¿¿Y como detecta que tu has implementado esa función y ahora si las activa??


<Hernán> escribió en el mensaje
news:
Tu programa es quien lo hace. El cuando lo elegís vos.

Para el item "pegar", puedes hacer un query en el _init_menú_,
preguntando al clipboard si contiene data en un formato que tu
aplicación maneje y, según sea la respuesta, habilitar o inhabilitar
el item. O puedes convertir tu programa en un visor del portapapeles,
entonces cada vez que ocurra un cambio va a ser notificado y allí
mismo puedes habilitar o inhabilitar el item, según haya data pegable.

Para el "cortar-copiar", el usuario tiene que poder seleccionar data
cortable/copiable (el clipboard es user-driven). Si lo hizo, lo
habilitas, sino no. ¿Cuándo? cuando hace la selección o durante el
WM_INITMENU[POPUP]. Cuando vos quieras.

Si tu programa tiene una toolbar que duplica a estos items del menú,
lo lógico es hacer los cambios al toque y no en el momento de
desplegar el menú.
Respuesta Responder a este mensaje
#3 JLK
10/07/2005 - 08:14 | Informe spam
Ya lo he averiguado (con más o menos detalles)...
la respuesta está en esta función:
CCmdTarget::OnCmdMsg
virtual BOOL OnCmdMsg( UINT nID, int nCode, void* pExtra,
AFX_CMDHANDLERINFO* pHandlerInfo );

Return Value

Nonzero if the message is handled; otherwise 0.

__________________________________________

"JLK" escribió en el mensaje
news:nMVze.2014201$
Hola
Cuando utilizas el AppWizard para crear un projecto SDI o MDI se crea una
especie de esqueleto
de lo que será la aplicación, se crea el menú con las opciones más
elementales. Entre ellas las opciones
de "copiar", "pegar" etc..
Bien estas opciones de "cortar-copiar-pegar" en principio se muestran
desactivadas y cuando
se implementa un manejador para alguna de ellas, entonces es cuando se
muestra activa dicha opción de menú.

MI PREGUNTA:
¿Cual es el mecanismo que utiliza VC++ para hacer esto, es decir para
desactivar una opción hasta que no
se implemente un manejador que procese el mensaje enviado al elegir dicha
opción.?
O es en realidad el sistema operativo(en mi caso Windows) el que hace
esto??

Gracias por anticipado y...
Un saludo para todos.

JLK.


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