Как отобразить список объектов оболочки? - PullRequest
0 голосов
/ 29 августа 2011

Я хочу отобразить совокупность элементов оболочки внутри моего элемента управления List View, собранных из разных папок, аналогично тому, как работает механизм поиска файлов Explorer .

У меня такое чувство, что мне нужно использовать IShellFolderView::AddObject, но весь интерфейс устарел, и в любом случае, я не могу понять, как на самом деле заставить это работать.

Как бы я поступил так?

Ответы [ 2 ]

1 голос
/ 30 августа 2011

Поскольку вы настаиваете на "получении" объектов оболочки, я предполагаю, что вы не используете элемент управления представлением списка, который требует от вас написания собственной поддержки оболочки, как это делает CMFCShellListCtrl.Было бы довольно просто добавить поддержку нескольких папок, если вы уже написали код для отображения файлов из одной папки в элементе управления представлением списка.

Если вы используете элемент управления Explorer браузера, отметьте пример проекта Hilo , он создает папку поиска с областью агрегации библиотек пользователя.Вероятно, вы можете создать свою собственную коллекцию папок с помощью интерфейса IObjectCollection объекта CLSID_EnumerableObjectCollection.Пример отображения папки поиска в элементе управления обозревателя Explorer: Пример поиска обозревателя Explorer

0 голосов
/ 29 августа 2011

Если это ваш элемент управления listview, то вы можете просто ListView_InsertItem каждый. Перечисляйте объекты из любого места и добавляйте их в свой список.

...