默認清單檢視訊息處理

本節列出清單檢視控件所執行的視窗訊息處理。

訊息處理

下表描述清單檢視控件所執行的視窗訊息處理。

訊息 已執行處理
WM_CHAR 搜尋以指定字元開頭的清單檢視專案,如果找到專案,請選取並將焦點設定為專案。 目前固定在一秒的超時時間間隔內收到的多個字元會串連,而清單檢視控件會搜尋以結果字串開頭的專案。
WM_COMMAND 處理EN_UPDATEEN_KILLFOCUS通知碼,並將所有其他編輯控件通知轉送至父視窗。
WM_CREATE 執行WM_NCCREATE的額外初始化。 如果未指定LVS_SHAREIMAGELISTS視窗樣式,清單檢視控件此時會建立圖示和小型圖示影像清單。
WM_DESTROY 釋放在WM_CREATE期間配置的資源。
WM_ERASEBKGND 使用清單檢視控件的目前背景色彩清除視窗背景。 如果背景色彩是CLR_NONE值,清單檢視控件會將訊息轉送至父視窗。
WM_GETDLGCODE 傳回DLGC_WANTTAB和DLGC_WANTARROWS值的組合。
WM_GETFONT 傳回目前標籤字型的句柄。
WM_HSCROLL 水平卷動清單檢視控件。
WM_KEYDOWN 處理SPACEBAR、ENTER和箭頭鍵,並將LVN_KEYDOWN通知碼傳送至父視窗。
WM_KILLFOCUS 如果有的話,請重新繪出焦點清單專案,並將NM_KILLFOCUS通知程式代碼傳送至父視窗。
WM_LBUTTONDBLCLK 傳送父視窗NM_DBLCLK (清單檢視) 通知碼。
WM_LBUTTONDOWN 根據正在起始的按兩下或拖曳作業,以不同的方式處理。 若要判斷涉及哪一項作業,清單檢視控件會進入強制回應消息迴圈,直到按鈕放開或移動滑鼠為止。 在單擊的情況下,清單檢視控件可能會變更哪些專案具有焦點和選取的專案,並考慮游標位置、SHIFT 和 CTRL 鍵的狀態等等。 然後,清單檢視控件會傳送其父視窗NM_CLICK (列表檢視) 通知碼。
如果拖曳從項目開始,清單檢視控件會選取並將焦點設定為專案。 然後,它會將LVN_BEGINDRAG通知程式代碼傳送至父視窗。 父視窗負責實際執行拖曳作業。
如果拖曳從視窗背景開始,清單檢視控件會進入另一個強制回應消息迴圈,讓用戶藉由拖曳滑鼠來形成矩形。 選取矩形內的專案。
WM_NCCREATE 配置並初始化內部數據結構,然後呼叫 DefWindowProc 函式。
WM_NCDESTROY 釋放清單檢視控件所配置的資源。 除非使用LVS_SHAREIMAGELISTS樣式,否則這包括刪除完整大小和小型影像清單。
WM_NOTIFY 處理標頭控件通知代碼。
WM_PAINT 顯示更新區域中的任何專案。 針對回呼專案,控件會先將LVN_GETDISPINFO通知碼傳送至擁有者視窗,以要求顯示資訊。 如果 wParam 參數不是 NULL,控制項會假設此值為 HDC,並使用該裝置內容繪製。
WM_RBUTTONDOWN 處理方式與 WM_LBUTTONDOWN 訊息相同,不同之處在於控件會傳送 NM_RCLICK(清單檢視) 通知碼(而不是 NM_CLICK(清單檢視)LVN_BEGINRDRAG 通知碼(而不是 LVN_BEGINDRAG)。 請注意,控件會處理對應的 WM_RBUTTONUP 訊息,而且不會分派它。 因此,即使透過子類別化控件,應用程式也看不到此訊息。
WM_SETFOCUS 如果有的話,請重新修補焦點清單專案,並將NM_SETFOCUS通知程式代碼傳送至父視窗。
WM_SETFONT 儲存指定的字型句柄、將訊息轉送至標頭視窗,如果有的話,並使用新的字型重新繪出。
WM_SETREDRAW 開啟或關閉重新繪製。
WM_TIMER 開始編輯專案標籤。 如果使用者按下焦點專案的標籤,清單檢視控件會設定定時器,而不是立即進入編輯模式。 當使用者按兩下卷標時,定時器可以讓清單檢視控件 無法 進入編輯模式。
WM_VSCROLL 垂直捲動清單檢視控制件。
WM_WINDOWPOSCHANGED 更新 視窗滾動條。 如果目前的檢視是圖示或小型圖示檢視,而且 指定了LVS_AUTOARRANGE 樣式,則清單檢視控件也會排列清單專案。
WM_WININICHANGE 處理系統計量的變更。