Esta pregunta se ha hecho antes, pero la respuesta no es "Bueno, depende de cada aplicación admitir diferentes opciones". Aún así, cuando haces clic derecho en una selección en el bloc de notas, un navegador, lo que sea, algo crea un menú contextual. ¿Cómo hace eso una aplicación? ¿Por qué no puedo agregarle más? ¿Cómo se agrega al menú contextual resaltado? Ninguna respuesta es mejor que no responder.
Respuesta1
Respuesta corta: si agregó un nuevo elemento de menú,el programa no sabría qué hacer cuando se hiciera clic en el elemento.En realidad, tienes que cambiar el código del programa para que los nuevos elementos del menú hagan algo. Por eso "depende de cada aplicación" es una respuesta válida.
Windows, como la mayoría de los demás sistemas operativos, proporciona un conjunto de funciones para crear programas GUI: algunas son parte del sistema ("crear una ventana"), otras son principalmente por conveniencia ("dibujar un botón en el que se puede hacer clic").
La mayoría de los programas muestran sus menús (normales y contextuales) mediante el uso de estas funciones; básicamente le dan a Windows una lista de elementos y solicitan que se muestre en la pantalla en forma de menú, y que informen al programa sobre lo que usted eligió.
A Windows no le importa especialmente de dónde proviene la lista de elementos. Algunos menús son generados por el propio programa (como la lista "Archivos recientes"); no puede cambiarlos sin reescribir la parte del programa que crea la lista de archivos recientes. Otros menús, como el menú "Archivo" o "Editar" o "Ayuda" en el Bloc de notas, se crean a partir de un "recurso" almacenado dentro del .exe
propio archivo, y existen herramientas para editar dichos recursos (por ejemplo, reorganizar los elementos del menú o cambiar el icono del programa).
Pero si usaras una herramienta de este tipo para agregar nuevos elementos de menú, no funcionarían porque el programano sabría que hacer. No hay magia asociada con cada elemento del menú, sólo un número único, un "ID de comando". Por ejemplo, "Copiar", que es común en muchos programas, tiene asignado el ID de comando 12 ("IDM_COPY"), y algo específico de un solo programa (como "Nuevo juego") podría tener 1234 o 2468 o algo más. Cuando abre un menú contextual y hace clic en "Copiar", Windows le dice al Bloc de notas solo que "se eligió el ID de comando 12", y depende del Bloc de notas colocar el texto seleccionado en el portapapeles cuando eso suceda.
- Cortar → ID 11 → El Bloc de notas coloca el texto en el portapapeles y luego lo elimina del documento
- Copiar → ID 12 → El Bloc de notas coloca el texto en el portapapeles
- Pegar → ID 13 → El Bloc de notas obtiene texto del portapapeles y luego lo inserta en el documento
- Cantar → ID 12 → El Bloc de notas coloca el texto en el portapapeles
- Copiar de nuevo → ID 3456 → El Bloc de notas no hace nada, ya que no tiene idea de lo que debería significar ID 3456
Nota al margen: lo anterior está un poco simplificado. El menú contextual del Bloc de notas en realidad se implementa mediante el control de "texto editable", que forma parte de las funciones de utilidad proporcionadas por Windows antes mencionadas. El menú principal, sin embargo, forma parte entera del Bloc de notas.
Nota al margen: algunos programas, generalmente aquellos a los que se les puede aplicar un diseño o un tema, en realidad dibujan varios controles por sí mismos, lo cual no es particularmente difícil, ya que un menú emergente es solo una ventana sin barra de título. Si bien yo mismo no he visto el código de dichos programas, no creo que los detalles cambien mucho.