作者uziel (= ̄ω ̄=)
看板C_and_CPP
標題[問題] 有沒有專門講 Windows common controls 客製化的資料?
時間Wed Dec 15 00:47:40 2010
開發平台(Platform): (Ex: VC++, Gcc, Linux, ...)
Visual C++ 2008 Express on Windows XP (使用 C 語言)
額外使用到的庫(Library Used) (Ex: OpenGL, ...)
Platform SDK only
問題(Question):
最近在寫圖片瀏覽器的時候需要用到 ListView 控制項來顯示縮圖,希望可以呈現出
和 Vista 、 Win7 的 Windows Explorer 相似的外觀,也就是 cursor 移動到檔案
四周的一定範圍內的時候檔案周圍出現半透明的框框。通過攔截 LVN_HOTTRACK 訊息
我可以得到 cursor 在哪個 item 上,但是它的感應區域卻跟 ListView_GetItemRect()
所得到的不一樣,不知道有沒有辦法設定 item 的滑鼠感應區域大小。另外,我還需要
讓每個 item 的 label 只有一列並固定寬度,這樣顯示出來才會整齊。
原本以為直接調用 Windows API 來設計視窗程式可以做到最大自由的客製化,可是
實際上卻依然有很多限制,除了上面所列的兩個問題以外,其實還有很多跟 item 的
排版有關的小問題,沒辦法只靠 custom draw 來解決,希望有相關的資料可以參考。
餵入的資料(Input):
預期的正確結果(Expected Output):
自由設定 ListView item 的 cursor 感應區、paint area 、自由調整 label 大小、
調整 item 跟 client 區域邊界的空白大小。
錯誤結果(Wrong Output):
程式碼(Code): (請善用置底文標色功能)
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.70.126.106
推 purpose:我也很嫩,提供點看法,如果是MFC包裝的CListView,透過OO 12/15 01:08
→ purpose:去override訊息迴圈,先自己處理WM_MOUSEMOVE從游標位置 12/15 01:09
→ purpose:自己算感應方面的東西,再把控制權還給原本的訊息處理機制 12/15 01:09
→ purpose:CodeProject有很多自訂control文章,但多是MFC就是 12/15 01:10
推 purpose:我錯了..是用 RegisterClass() 來讓 DispatchMessage() 把 12/15 01:46
→ purpose:WM_MOUSEMOVE訊息送給自訂的 WndProc 才對,不用 override 12/15 01:47
→ uziel:可是自訂的 WndProc 跟 ListView 有什麼關係呢? 12/15 10:30
→ uziel:把 message 導向自訂的 WndProc 應該不能影響其他控制項 12/15 10:32
→ uziel:的行為吧? 12/15 10:33