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 檔)不然寫的好可是不簡單的任務... 大概是這樣 :)