ShGetFileInfo вызвал странность каталога - PullRequest
3 голосов
/ 17 марта 2010

У меня есть простой файловый браузер, и там я отображаю файлы и папки,

получено (для справочника)

SHFILEINFO info = new SHFILEINFO();
SHGetFileInfo(filename,
FILE_ATTRIBUTE_DIRECTORY,
ref info,Marshal.SizeOf(info),
SHGFI_ICON | SHGFI_USEFILEATTRIBUTES | SHGFI_SMALLICON | SHGFI_ADDOVERLAYS);

Это работает на 100% нормально, но я заметил странность - если я пытаюсь получить значок для каталога, но указываю FILE_ATTRIBUTE_NORMAL вместо FILE_ATTRIBUTE_DIRECTORY но он делает странные вещи для каталогов - обычные папки имеют значки "неизвестный тип файла", в корзине есть значок VLC и т. д. Каталоги в SVN имеют надлежащее наложение, но значок базового файла (белый лист бумаги).

Я понимаю, что базовый значок для каталога теперь будет означать неизвестный файл, но почему некоторые папки имеют совершенно странный значок? Config.MSI имеет значок установщика, корзина имеет значок VLC (wtf ?!) и т. Д. Что функция оболочки делает с этими параметрами? Точно какой значок он получает?

Опять же, это не проблема, мне просто любопытно.

1 Ответ

1 голос
/ 23 марта 2010

Насколько я знаю, ресурсы значков доступны по их числовому индексу, поэтому я предполагаю, что правильный индекс выбирается, а значок выбирается либо из неверной библиотеки, либо из правой, но с использованием неправильного смещения правильный индекс.

...