Кто-нибудь знает, где я могу найти стандартные значки панели инструментов диалогового окна файла Windows?

Я пытаюсь развернуть свою собственную реализацию IShellBrowser, потому что мне нужно иметь более полнофункциональный диалог открытия и сохранения файла, чем позволяет Windows, который совместим с XP (и в идеале с W2000) *

На этом этапе мне нужно добавить стандартную панель инструментов, которую вы видите в правом верхнем углу диалогового окна (стили манифеста для XP и более ранних версий) - кнопку «Назад», кнопку родительской папки, кнопку новой папки и раскрывающийся список «Инструменты». .

Но пока мне не удалось найти эти значки / изображения. Я искал в USER32.dll, comdlg32.dll, comctl32.dll, но не нашел ничего, что подходило бы.

Я мог бы просто сделать снимки экрана приложения, где я могу их найти, но, возможно, было бы более полезно знать, откуда они берутся, чтобы я мог получить доступ к различным версиям этих кнопок (высокое разрешение, низкое разрешение, мелкий цвет, глубокий цвет , и т.д.).

Любые идеи?

[Изменить: мне нужно, чтобы он был совместим с Vista и Windows 7. Просто, начиная с Vista, они сломали старую общую модель диалогов, а их новая модель повреждена мозгом. мы вынуждены подойти к проблеме с другой стороны]


person Mordachai    schedule 10.11.2009    source источник


Ответы (7)


Попробуйте shell32.dll в Windows \ System32.

person JRL    schedule 10.11.2009
comment
Взрыв - я смотрел на это. Не повезло :( - person Mordachai; 11.11.2009
comment
Ха - вообще-то, похоже, он там есть! Но идентификатор растрового изображения меняется от версии к версии Windows. В XP - 216, в Vista - IDB_TB_SH_DEF_16. Я собираюсь поиграть с SHGetImageList () и посмотреть, к чему это приведет ... - person Mordachai; 11.11.2009
comment
В конечном итоге именно здесь находятся кнопки панели инструментов. К сожалению, они живут под разными идентификаторами в зависимости от версии Windows. Спасибо всем за вашу помощь. : D - person Mordachai; 12.11.2009

Я нашел эту таблицу, содержащую список системных файлов, содержащих встроенные значки. Возможно, в одном из них вы найдете то, что ищете:

Filename     Number of Icons
-----------------------------
compstui.dll    99
comres.dll      38
cryptui.dll     20
csc.dll         22
dsuiext.dll     35
explorer.exe    18
iexplore.exe    23
inetcpl.cpl     34
inetcpl.dll     14
mmcndmgr.dll    129
mmsys.cpl       40
moricons.dll    140
netshell.dll    157
ntbackup.exe    26
pfmgr.dll       38
progman.exe     48
setupapi.dll    37
SHDOCVW.DLL     35
shell32.dll     238
stobject.dll    31
wiashext.dll    23
wmploc.dll      60
xpsp2res.dll    19
person Amro    schedule 10.11.2009

Попробуйте поискать в imageres.dll. Здесь вы должны найти большую часть ресурсов изображений для Vista.

person Robert Harvey    schedule 10.11.2009

стиль перспективы http://www.freeiconsweb.com/Vista-Style-Software-Icons-Set.html

не окна, а действительно полный http://www.freeiconsweb.com/Webmaster-Pixel-Icon-Set.html

просто ссылка для скачивания внизу

http://www.freeiconsweb.com/Vista_Folders_Icons.html

person Kieran    schedule 10.11.2009

Если вы просто попросите оболочку предоставить список изображений, она выдаст его вам.

Shell_GetImageLists ()

И тогда вы можете использовать те, которые захотите. Ура.

Изменить: похоже, что SHGetImageList () может быть более лучший способ сделать это.

person i_am_jorf    schedule 10.11.2009
comment
К сожалению, все, что я получил, - это 5 значков: файл, папка, общий доступ, ссылка, удалить. Я немного поигрался с параметрами, но пока это единственные изображения, которые возвращает SHGetImageList () (в любом запрошенном размере). - person Mordachai; 11.11.2009
comment
Вау, это отстой. Что ж, думаю, попробовать стоило. - person i_am_jorf; 12.11.2009

Используйте свои собственные значки. Идентификаторы ресурсов в Shell32.dll не задокументированы и могут быть изменены в Центре обновления Windows.

person Sheng Jiang 蒋晟    schedule 12.11.2009
comment
Спасибо. Я решил извлечь нужные мне из shell32.dll, чтобы они соответствовали нашему приложению. - person Mordachai; 21.11.2009

В Windows есть 3 "стандартных" панели инструментов. Из CommCtrl.h (источник):

  • Стандартный:  введите описание изображения здесь (IDB_STD_SMALL_COLOR)
  • Просмотр:  введите описание изображения здесь (IDB_VIEW_SMALL_COLOR)
  • История:  введите описание изображения здесь (IDB_HIST_SMALL_COLOR)

Индексы для изображений : задокументировано, и его можно найти в CommCrtl.h. Например, индексами изображений Стандарт являются:

  • STD_CUT (0): операция вырезания.
  • STD_COPY (1): операция копирования
  • STD_PASTE (2): операция вставки.
  • STD_UNDO (3): отменить операцию.
  • STD_REDOW (4): повторить операцию. (да, типоу)
  • STD_DELETE (5): операция удаления.
  • STD_FILENEW (6): новая файловая операция.
  • STD_FILEOPEN (7): операция открытия файла.
  • STD_FILESAVE (8): операция сохранения файла.
  • STD_PRINTPRE (9): предварительный просмотр печати.
  • STD_PROPERTIES (10): операция свойств.
  • STD_HELP (11): операция справки.
  • STD_FIND (12): поиск операции.
  • STD_REPLACE (13): операция замены.
  • STD_PRINT (14): операция печати.

Вы загружаете стандартный набор изображений в список изображений панели инструментов, отправляя Сообщение TB_LOADIMAGES:

// hWndToobar is the window handle of the toolbar control.
SendMessage(hWndToolbar, 
      TB_LOADIMAGES, 
      (WPARAM)IDB_STD_SMALL_COLOR, 
      (LPARAM)HINST_COMMCTRL);
person Ian Boyd    schedule 18.07.2018