更多信息請(qǐng)?jiān)L問(wèn):考試吧計(jì)算機(jī)類論壇
TlistView 控件是vcl 對(duì)windows公用控件庫(kù)的一個(gè)封裝.用戶TlistView控件并未提供自繪表頭的事件, 一般情況下, 要想自繪表頭比較困難. 但是windows 所有控件的繪制都是由于消息WM_PAINT的產(chǎn)生,而由窗口過(guò)程來(lái)繪制的, 這樣我們似乎就有可能通過(guò)WM_PAINT消息能夠繪制TlistView表頭. 經(jīng)過(guò)分析發(fā)現(xiàn)TlistView 的組成實(shí)際上包括了兩部分, 一部分是TlistView本省, 另外一部分就是TlistView的表頭, 該表頭實(shí)際上是一個(gè)嵌入TlistView里面的獨(dú)立的窗口, 該窗口的類名為”SysHeader32”.(可以使用ccrun寫的窗口探測(cè)工具spy4win觀察的到). 綜合上述依據(jù), 實(shí)現(xiàn)TlistView表頭的自繪可以分為一下幾個(gè)步驟:
1. 查找TlistView的表頭窗口句柄.
2. 替換表頭窗口的窗口過(guò)程
3. 表頭的WM_PAINT消息
4. 在窗口過(guò)程中編寫繪制代碼
這樣就能繪制TlistView 的表頭了.具體實(shí)現(xiàn)方式如下 :
1. 查找表頭有三種方式
一. 使用FindWindowEx :
以類名”SysHeader32”來(lái)查找TlistView的子窗口, 由于TlistView只有一個(gè)名為”SysHeader32”的子窗口(就是表頭), 所以一定能夠獲取到表頭窗口的句柄.
相關(guān)推薦:C實(shí)例編程:編寫高效簡(jiǎn)潔的C語(yǔ)言四大絕招北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |