推 LiloHuang:Windows 的縮圖快取可以透過 IExtractImage 來獲得 04/29 21:16
好的,感謝你的幫忙,我再來看看有沒有辦法跟Qt結合
→ LiloHuang:至於記憶體不足,除了 memory leak 有些該釋放沒釋放 04/29 21:23
→ LiloHuang:還有一種可能就是圖片太大,難以配置到連續的記憶體空間 04/29 21:23
我看了一下記憶體的變化,我進入到140m的照片資料夾後,讀取的記憶體卻高達1G多
還滿奇怪的,不過我程式確實就當掉了,看了一下工作管理員的記憶體
"可用"還有2G多,"未使用"只剩不到一百,然後"可用"慢慢的減少
"未使用"卻在慢慢的增加,我在想會有可能會是程式讀取圖片太快,
系統轉換記憶體太慢導致當掉的嗎?
對作業系統不是很熟ˇ_ˇ
推 LiloHuang:至於讓 XP 直接顯示 thumbnail view 應該沒直接的方式 04/29 21:32
→ LiloHuang:倒是這兒有一篇文章提到,有一些特殊技巧可以辦到 :P 04/29 21:33
→ LiloHuang:SendMessage(hWnd, WM_COMMAND, ODM_VIEW_THUMBS, 0); 04/29 21:50
剛剛立刻GOOGLE查QT使用SendMessage的方法測試了一下,
但卻FileDialog卻沒有反應,本身也沒學過WIN32,使用的方法也不知道對不對
#include <windows.h>
QFileDialog fileDialog;
::SendMessageW( (HWND)fileDialog.winId(), WM_COMMAND, 0x702b, 0);
fileDialog.exec();
不過一直覺得這方法是最下策,總覺得這樣算是偷吃步,並不是真正解決問題
雖然有完成需求才是最重要的...
推 LiloHuang:還有如果自己 decode 會卡住,是因為 UI thread 被卡住 04/29 21:53
→ LiloHuang:會卡 UI 的任務,都該放到 worker thread 非同步執行 04/29 21:55
→ LiloHuang:待任務完成之後,再通知 UI thread 更新畫面之類的 04/29 21:56
我發現我文章要打"執行緒"卻打成"副程式",哈哈
感謝L大的指導以前英文沒學好,第一篇文章明天放學要來慢慢邊翻譯邊看了
感謝你
※ 編輯: googled (49.158.60.5), 04/30/2014 00:19:38
※ 編輯: googled (49.158.60.5), 04/30/2014 00:20:19
推 LiloHuang:雖然我沒有真的測試,但根據 MSDN 那篇文章的描述 04/30 00:50
→ LiloHuang:SendMessage 在特定情況才會成功,其他狀況會失敗 04/30 00:50
→ LiloHuang:可能要做一下 Hook 在 init dialog 時,送 PostMessage 04/30 00:51
→ LiloHuang:給 FileDialog 自己,然後再該時機點去改變排序的類型 04/30 00:52
→ LiloHuang:搭配下 debug break point 來幫助自己釐清哪些階段增加 04/30 00:56
→ LiloHuang:procexp 使用時,請直接針對你的 process 點兩下來觀察 04/30 00:56
推 LiloHuang:如果可以直接改 dialog 排序達成目的當然是最快 04/30 00:59
→ LiloHuang:其次是 IExtractImage 這方法得懂一些 COM 操作 04/30 01:00
→ LiloHuang:自己 decode 圖片,除非是特殊需求 (如要顯示 RAW 檔) 04/30 01:00
→ LiloHuang:不然寫的好可是不簡單的任務... 大概是這樣 :) 04/30 01:01