2009-07-28 3 views
2

Une de mes applications possède un contrôle de la liste de fichiers de Windows Explorer. Lorsque l'utilisateur clique droit sur un fichier, je peux afficher le menu contextuel de l'explorateur (avec quelques options supplémentaires). Cependant, si l'utilisateur clique avec le bouton droit sur le contrôle de la liste lui-même (aucun élément sélectionné), je ne peux pas afficher le menu contextuel «correct». Je voudrais montrer celui que vous voyez dans Windows Explorer sur le côté droit plutôt que celui de l'arbre sur le côté gauche. J'ai essayé un tas de variations dans mes appels à GetUIObjectOf, j'ai navigué sur le web de Google, etc, mais je n'ai pas encore trouvé de solution. De l'aide?Le menu contextuel de l'explorateur de droite (IID_IContextMenu?)

+0

C'est une question vraiment difficile. Je doute que quiconque connaisse la réponse :-) –

Répondre

2

Appelez IShellFolder :: CreateViewObject() pour obtenir IContextMenu pour un dossier lui-même. IShellFolder :: GetUIObjectOf() est conçu pour récupérer des interfaces pour des éléments individuels dans un dossier, pas pour un dossier lui-même. Ceci est indiqué dans la documentation MSDN:

IShellFolder::CreateViewObject Method

Cette méthode est également utilisée pour demander objets qui exposent une de plusieurs interfaces en option, y compris IContextMenu ou IExtractIcon. Dans ce contexte , CreateViewObject est similaire en utilisation à IShellFolder :: GetUIObjectOf. Cependant, vous appelez IShellFolder :: GetUIObjectOf pour demander un objet pour l'un des éléments contenus dans un dossier. Appelez IShellFolder :: CreateViewObject à demander un objet pour le dossier lui-même.

+0

Merci beaucoup. Fonctionne comme un charme :-) –

0

La solution posté par Remy Lebeau est probablement la voie à suivre, mais si vous ne l'utilisez tous les objets shell ou si vous voulez un menu plus personnalisé, vous regarderait dans HKCR \ Directory \ Background pour une liste des GUID qui implémentent IContextMenu, le reste des éléments de menu, vous auriez à vous ajouter.

Questions connexes