Windows 的缩图快取可以透过 IExtractImage 来获得这篇虽不是 C++ 的范例
http://goo.gl/N7RLlz 仍可参考至于内存不足,除了 memory leak 有些该释放没释放还有一种可能就是图片太大,难以配置到连续的内存空间至于让 XP 直接显示 thumbnail view 应该没直接的方式倒是这儿有一篇文章提到,有一些特殊技巧可以办到 :P
http://goo.gl/lm3hnw 自己 SendMessage 给 dialog 囉SendMessage(hWnd, WM_COMMAND, ODM_VIEW_THUMBS, 0);还有如果自己 decode 会卡住,是因为 UI thread 被卡住会卡 UI 的任务,都该放到 worker thread 异步执行待任务完成之后,再通知 UI thread 更新画面之类的虽然我没有真的测试,但根据 MSDN 那篇文章的描述SendMessage 在特定情况才会成功,其他状况会失败可能要做一下 Hook 在 init dialog 时,送 PostMessage给 FileDialog 自己,然后再该时机点去改变排序的类型观察内存用量请用 procexp.exe
http://goo.gl/n7utTE搭配下 debug break point 来帮助自己厘清哪些阶段增加procexp 使用时,请直接针对你的 process 点两下来观察如果可以直接改 dialog 排序达成目的当然是最快其次是 IExtractImage 这方法得懂一些 COM 操作自己 decode 图片,除非是特殊需求 (如要显示 RAW 档)不然写的好可是不简单的任务... 大概是这样 :)