參考 Word 顏色下拉選單風格,實作繼承自 CComboBox 的 CBSColorComboBox,每個下拉項目顯示顏色色塊與名稱,支援「更多顏色」自訂選擇,完整處理 WM_MEASUREITEM/WM_DRAWITEM/WM_PAINT/WM_ERASEBKGND 實現無閃爍自繪。
::GetSystemMetrics(SM_CYSMICON) * 2)。LPDRAWITEMSTRUCT,從 hDC、rcItem 繪製:
CDC::FillSolidRect 繪製色塊,DrawText 繪製名稱。itemState(選取/停用/焦點)調整文字/背景色、繪製邊框/焦點矩形。TRUE 抑制預設背景擦除,配合 WM_PAINT 全區更新消除閃爍。COLORREF、名稱字串、是否為「更多顏色」旗標。FillRect 清除舊項目區域,再繪製新項目。CColorDialog 讓使用者自訂顏色。MEASUREITEM 定尺寸 → DRAWITEM 畫內容 → PAINT 整體更新。CBSColorComboBox 類別(繼承 CComboBox)。ComboBox,設定 Owner Draw Fixed、Has Strings、Vertical Scroll。CBSColorComboBox 型別,初始化時呼叫自訂 InitColors() 填入預設顏色陣列。範例程式展示下拉選單顏色色塊與名稱完美對齊、選取態高亮、停用灰階、「更多顏色」彈出標準顏色對話框,視覺效果媲美 Office 套件。