CPlApplet 回呼函式會處理 Windows 傳送至控制面板專案的所有訊息。 傳送至函式的訊息會依特定順序排列。 同樣地,.cpl 項目需要以特定方式處理訊息。
首先,當 Windows 第一次載入控制面板專案時,CPlApplet 函式會收到CPL_INIT訊息。 函式應該執行任何初始化,例如配置記憶體,並傳回非零。 如果 CPlApplet 無法完成初始化,則必須傳回零,指示 Windows 終止通訊並釋放 DLL。
接下來,如果CPL_INIT訊息成功,Windows 會傳送CPL_GETCOUNT訊息。 然後,函式必須傳回 .dll 檔案支援的控制面板項目數目。
CPlApplet 函式接著會針對 .dll 檔案所支援的每個控制面板專案接收一則CPL_INQUIRE訊息和一則CPL_NEWINQUIRE訊息。 函式會填入 CPLINFO 或 NEWCPLINFO 結構,其中包含專案的相關信息,例如其名稱、圖示和描述性字串。 大部分的應用程式都應該處理CPL_INQUIRE訊息,並忽略CPL_NEWINQUIRE訊息。 CPL_INQUIRE訊息會以可讓 Windows 快取的形式提供資訊,這樣可以顯著提升效能。 只有在您需要變更項目的圖示或根據計算機狀態顯示字串時,才會使用CPL_NEWINQUIRE訊息。 Windows Vista 中的 [開始] 功能表搜尋找不到使用CPL_NEWINQUIRE的控制面板專案,因為它依賴快取。
CPlApplet 函式會接著收到CPL_DBLCLK訊息,通知使用者已選擇代表控制面板專案的圖示。 函式可能會多次收到此訊息。 訊息包含專案標識符,以及在呼叫 CPL_INQUIRE 或 CPL_NEWINQUIRE時,於 CPLINFO 或 NEWCPLINFO 結構中傳回的 lpData 指標。 函式應該會顯示對應的對話框,並處理後續的用戶輸入。
除了CPL_DBLCLK之外,如果使用輸入參數啟動控制台項目,例如從命令提示字元或從另一個程式啟動,則可以傳送CPL_STARTWPARMS訊息。 訊息包含專案識別碼以及其他參數位符串。
在控制應用程式終止之前,CPlApplet 會針對 .dll 檔案所支援的每個控制面板專案收到CPL_STOP訊息一次。 此訊息包含控制面板專案的標識碼,以及呼叫 CPL_INQUIRE 或 CPL_NEWINQUIRE中傳回的 CPLINFO 或 NEWCPLINFO 結構中傳回的 lpData 指標。 函式應該釋放它為指定對話框配置的任何記憶體。
在最後一個CPL_STOP訊息之後,CPlApplet 會收到CPL_EXIT訊息。 函式應該釋放所有剩餘的已配置記憶體,並取消註冊它可能已註冊的任何私人窗口類別。 當函式從此訊息返回後,Windows 會透過呼叫 FreeLibrary 函式來釋放控制面板項目。
相關主題
-
在 Windows Vista 下以安全模式存取控制面板