2010-02-19 86 views

回答

1

在以this answer評論你建議業主繪製列表框中的項目你說:

我不知道爲什麼我必須做的是,當需要的功能在列表框已經存在

組合框實際上由三個本地子窗口組成 - 組合框本身,嵌入式編輯和列表框。您可以使用GetComboBoxInfo()函數來填充COMBOBOXINFO結構(即TComboBoxInfo記錄)和有關該控件的信息,並將返回其中的3個HWND元素。這樣你就可以改變列表框的外觀和行爲。原則上。

對於要使用製表位的列表框,需要設置LBS_USETABSTOPS樣式標誌。不幸的是,這不能在以後打開,列表框必須與它一起創建。因此,只有當您可以打開列表框中的樣式標誌時纔可以使用該功能,該列表框在組合框的CreateWindowEx()調用期間創建。 AFAICS只能通過掛接CreateWindowEx()調用本身,識別創建列表框的內部調用以及更改傳遞的樣式來完成。這意味着代碼的運行時修改,而不是在您的可執行文件中,但在Windows DLL中。

所有者繪製列表項看起來會更容易。

+0

感謝您的完整和詳細的解釋,完全解答我的問題。然而,做這件事太費事了。 – 2010-02-21 19:28:45

0

從我所知道的有沒有這麼簡單的方式,這裏TabWidth,但你可以覆蓋Paint方法,並自己畫。查看列表框和組合框可能會有所幫助。

+0

我認爲OnDrawItem方法會更有用 – SimaWB 2010-02-19 12:52:07

+0

我想知道爲什麼當必需的功能已經存在於列表框上時我必須這樣做。 – 2010-02-19 14:56:26