有谁知道我在哪里可以找到标准的Windows文件对话框工具栏图标?

时间:2009-11-10 22:34:46

标签: c++ com user-interface icons windows-shell

我正在尝试推出自己的IShellBrowser实现,因为我需要一个功能更全面的文件打开和另存为对话框,而Windows允许它与XP兼容(理想情况下与W2000兼容)*

此时我需要添加您在对话框右上角看到的标准工具栏(XP及更早版本的清单样式) - 后退按钮,父文件夹按钮,新文件夹按钮和“工具” “放下。

但到目前为止,我找不到这些图标/图像是不成功的。我查看了USER32.dll,comdlg32.dll,comctl32.dll,但没有发现任何匹配的内容。

我可以简单地拍摄一个可以找到它们的应用程序的屏幕截图 - 但是知道它们来自哪里可能更有用,所以我可以访问这些按钮的各种版本(高rez,低rez,浅色) ,深色等。)。

有什么想法吗?

[编辑:我需要它与Vista兼容; Windows 7也是。它只是从Vista开始,他们打破了旧的通用对话模型,他们的新模型是脑损坏的IMO - 我不再有足够的访问对话状态来执行我们的对话过去所做的必要任务 - 所以我们被迫从另一个角度解决问题]

7 个答案:

答案 0 :(得分:3)

在Windows \ System32中尝试shell32.dll

答案 1 :(得分:2)

尝试查看imageres.dll。您应该在那里找到Vista的大部分图像资源。

答案 2 :(得分:2)

我发现这个表包含一个包含嵌入图标的系统文件列表。也许你可能会在其中一个中找到你想要的东西:

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

答案 3 :(得分:1)

答案 4 :(得分:1)

如果您只是向shell询问它的图像列表,它会将它提供给您。

Shell_GetImageLists()

然后你可以使用你想要的任何一个。耶。

修改:看起来SHGetImageList()可能是更好的方式。

答案 5 :(得分:1)

使用您自己的图标。 Shell32.dll中的资源ID没有记录,可以在Windows Update中更改。

答案 6 :(得分:1)

Windows有3个“标准” 工具栏。来自CommCtrl.h source

  • 标准enter image description here (IDB_STD_SMALL_COLOR)
  • 查看enter image description here (IDB_VIEW_SMALL_COLOR)
  • 历史记录enter image description here (IDB_HIST_SMALL_COLOR)

图像are documented的索引,可以在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);