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

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.

214477
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
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.
Referencias

Advertencia: este artículo se ha traducido automáticamente

Propiedades

Id. de artículo: 214477 - Última revisión: 01/07/2015 09:06:20 - Revisión: 2.3

  • Microsoft Platform Software Development Kit-January 2000 Edition
  • kbnosurvey kbarchive kbmt kbcontmenu kbextension kbprb KB214477 KbMtes
Comentarios