2017-06-30 1 views
0

Lorsque dans l'Explorateur de fichiers, nous utilisons la fonction de recherche F3, ceci génère un ListView qui contient certains fichiers (résultats de la recherche).ListView de style Explorateur qui contient la liste de fichiers personnalisée

enter image description here

Est-il possible, et si oui avec lequel un widget WinAPI en utilisant Visual C++, d'avoir un ListView explorateur de fichiers similaires contenant une liste personnalisée des fichiers (fichiers peuvent ne pas être dans le même répertoire, etc. .)?

-à-dire un ListView qui a tous les éléments natifs de l'interface utilisateur Explorer (petites icônes près du nom de fichier, clic droit ouvre une fenêtre avec des actions à faire sur les fichiers, etc.)

Winspector dit que c'est DirectUIHWND, mais peut nous en créons un et transmettons un tableau de fichiers à afficher dedans?

Pour être plus précis: Je sais comment afficher des éléments de texte dans un SysListView32, mais comment afficher fichiers, et ont toutes les fonctionnalités disponibles dans l'Explorateur (clic droit -> menu contextuel des fichiers, avec Open, Open avec, etc., F2 -> renommer le fichier, etc.) directement sans avoir à re-coder toutes ces centaines de fonctionnalités?

+0

Créez un contrôle d'affichage de liste et placez-y tout ce que vous voulez. 'DirectUIHWND' est un contrôle MS privé qui enveloppe le contrôle d'affichage de la liste système. Vous devez utiliser un contrôle d'affichage de la liste système. C'est un peu difficile de savoir quelle est la question ici. Vous semblez demander, "est-il possible d'afficher les choses dans une vue de liste". C'est répondu trivialement par l'affirmative. –

+0

Merci pour votre commentaire @DavidHeffernan. Je sais comment afficher les éléments de texte dans 'SysListView32', mais ma question est: comment afficher * les fichiers *, et avoir toutes les fonctionnalités disponibles dans l'Explorateur (clic droit -> menu contextuel pour les fichiers, avec Ouvrir, Ouvrir avec, etc. , F2 -> renommer le fichier, etc.) directement dans un 'ListView' sans avoir à re-coder toutes ces centaines de fonctionnalités. – Basj

+1

C'est une question très vaste. Il existe de nombreux exemples juste un websearch qui montrent comment faire cela. –

Répondre

1

Explorer dans Windows Vista et versions antérieures utilise le contrôle listview standard, Windows 7 et versions ultérieures utilise par défaut un contrôle personnalisé qui ressemble à une liste. Avant d'écrire votre propre implémentation, vous devez essayer IExplorerBrowser, en particulier la méthode FillFromObject.

Si vous souhaitez utiliser un listview, les bases sont:

+0

Merci pour votre réponse @Anders. Je ne veux pas nécessairement un 'SysListView32', je voudrais juste utiliser la méthode la plus simple pour avoir toutes les fonctionnalités de style explorateur sans avoir à les re-coder. Donc, il semble que je devrais mieux utiliser 'IExplorerBrowser'? Pensez-vous que je serai capable de le remplir avec des centaines de milliers de fichiers? (exemple: tous les fichiers JPG du disque dur que j'ai indexé auparavant, etc. – Basj

+0

IExplorerBrowser utilise le même contrôle personnalisé qu'Explorer, il s'agit probablement de la même implémentation interne, les performances doivent donc être identiques à celles de la recherche de tous les fichiers .jpg dans Explorer. – Anders

+0

... et en mode shell normal, tout n'est pas documenté, donc IExplorerBrowser ne fonctionne pas correctement avec les éléments de panneau de contrôle fantaisie qui prennent en charge toute la fenêtre IIRC. – Anders