| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Как правильно реализовать регистрацию класса |
| Автор: wildru 16.2.2009, 16:37 | ||||
| Подскажите, ко может... Как правильно реализавоть регистацию класса расширения оболочки для виртуального файла (полученого через IEnumIDList). Например расширение IExtractIcon. Может через интерфейс IQueryAssociation...? Я делаю так: - Зарегистрировал класс реализаии интерфейса IShellFolder TShellFolder для файла с нужным расширением по категории CATID_BrowsableShellExt. - В функции CreateViewObject для IShellView создаю стандартный ShellView через SHCreateShellFolderView - В функции EnumObjects возвращаю IEnumIDList - В функции BindToObject для элемента из IEnumIDList возвращаю IShellFolder выполняемый тем же классом TShellFolder - В функции GetUIObjectOf возвращаю IExtractIcon Результат не радует: При реализации интерфейса IExtractIcon для расширения простанства имен конкретного фала , не отображаются иконки для виртуальных элементов список которых составляю через IEnumIDList. В дереве проводника иконки показываются правильно, а в самом списке справа показывается иконка непонятно какая, толи иконка основного класса , толи первая попавшаяся. Один из вариантов реализация IExtractIcon:
Может проблема заключатся в том, что в методе интерфейса IEnumIDList функция Next в параметре rgelt должна возвращать PItemIDList , который содержит полный путь начиная с DesctopFolder ? ( Т.е. этот параметр используется виндовым шелом как полный путь, а не как описание одного элемента ItemID). В общем перепробовал многое , ничего не помогает.
|
| Автор: Poseidon 16.2.2009, 17:01 |
| Одним постом сразу 2 правила форума нарушил: Один топик - один вопрос Название темы должно кратко отражать ее суть Придут модеры, настучат по голове. Добавлено через 1 минуту и 15 секунд а еще используй тег [code] |
| Автор: wildru 16.2.2009, 18:33 |
Название темы должно кратко отражать ее суть. - Не знаю как поменять тему. Один топик - один вопрос. - Переделал. Надеюсь это как то поможет рещению проблемы. |