PRB: Elementos de menú duplicados en el menú archivo para una extensión de menú contextual del shell

Seleccione idioma Seleccione idioma
Id. de artículo: 214477 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

En este artículo se describe una versión Beta de un producto de Microsoft. La información contenida en este artículo se proporciona tal cual y está sujeta a cambios sin previo aviso.

No hay disponible soporte técnico formal del producto por parte de Microsoft para esta versión Beta. Si desea información acerca de cómo obtener soporte técnico para una versión Beta, consulte la documentación incluida con los archivos del producto o busque en el sitio Web desde el que descargó la versión.

En sistemas con Shell32.dll versión 4.71 o mayor, una extensión de menú de contexto para una carpeta de archivo que se inserta uno o más menús emergentes resultado duplicados de estos elementos de menú. Esto ocurre cuando se activa más de una vez el menú archivo para el objeto seleccionado.

Causa

En una extensión de menú de contexto, si se insertan los menús emergentes mediante InsertMenu o AppendMenu, a continuación, el ID para el elemento de menú emergente no puede especificarse. En su lugar, este campo debe tener en HMENU del menú emergente. Porque el identificador no se especificó para el elemento de menú emergente, el shell de no mantener un seguimiento del elemento de menú si el menú archivo se han obtenido varias veces. Como resultado, los elementos de menú emergente se agregan varias veces en el menú contextual.

Este problema produce sólo cuando el menú archivo se han obtenido y no ocurre cuando se invoca el menú contextual mediante el botón secundario o la tecla de menú de contexto.

Solución

Para evitar este problema, utilice funciones InsertMenuItem y especificar el identificador del elemento de menú emergente en el miembro wID de la estructura MENUITEMINFO.

Código de ejemplo

mii.fMask = MIIM_SUBMENU | MIIM_TYPE | MIIM_CHECKMARKS | MIIM_STATE | MIIM_ID;
mii.wID = idCmdFirst++;
				

Estado

Este comportamiento es por diseño.

Más información

Pasos para reproducir este comportamiento

  1. Cree una extensión de menú de contexto de shell para una carpeta de archivo. Puede utilizar para empezar con "ShellExt: básica extensión de shell" como ejemplo.
  2. En la implementación IContextMenu::QueryContextMenu , inserte un elemento de menú emergente con InsertMenu o AppendMenu .
  3. Una vez generada la extensión de menú de contexto, registrarlo.
  4. Abra el explorador y seleccione un archivo para que se registra el menú contextual o seleccione una carpeta.
  5. Extracción hacia abajo el menú archivo. Se muestra el menú contextual para el objeto, junto con el menú emergente agregado.
  6. Cerrar el menú y extraer de nuevo hacia abajo el menú archivo. El menú contextual para el objeto se muestra con dos elementos de menú emergente idénticos agregados la extensión del menú contextual del shell.

Propiedades

Id. de artículo: 214477 - Última revisión: lunes, 11 de julio de 2005 - Versión: 2.3
La información de este artículo se refiere a:
  • Microsoft Platform Software Development Kit-January 2000 Edition sobre las siguientes plataformas
    • Microsoft Windows 98 Standard Edition
    • Microsoft Windows 95
    • Microsoft Windows NT Server 4.0 Standard Edition
    • Microsoft Windows NT Workstation 4.0 Developer Edition
    • the operating system: Microsoft Windows 2000
Palabras clave: 
kbmt kbcontmenu kbextension kbprb KB214477 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 214477

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com