2009-04-08 7 views
1

J'ai créé une extension Windows Shell similaire au GDrive de Google. Maintenant, je veux ajouter des vues différentes à ListView qui hérite de IShellView. Un nouveau menu contextuel a été ajouté pour afficher 3 vues (Détails, Petite icône, Grande icône). Lorsqu'une vue est modifiée à l'aide du menu contextuel, la fenêtre en cours doit être actualisée/créée pour afficher la vue modifiée. Dans mon IShellFolder :: EnumObjects, un nouvel objet ListView est créé et OnCreate est appelé automatiquement. J'ai besoin d'appeler cette méthode quand je change de vue en utilisant le menu contextuel aussi. Je suppose qu'il pourrait y avoir une API comme SHChangeNotify() qui peut automatiquement créer tous les EnumObjects() et une nouvelle fenêtre IShellView avec la vue modifiée.Comment appeler IShellFolder :: EnumObjects de manière externe dans une extension shell

Répondre

1

Comme je l'ai compris à partir de votre question, vous avez besoin du même contenu à voir dans la liste, mais avec la nouvelle vue.

Vous n'avez pas besoin de recréer l'objet Listview après la nouvelle sélection du mode d'affichage, qui se trouve juste à LVS_REPORT, de LVS_SMALLICON ou LVS_ICON style ListView.

SHChangeNotify est utilisé pour refléter la modification du volet de l'arborescence et non du ListView.