程序設計中HyperLink控件經常用到,vs2010 自帶了HeperLink控件,可以直接在設計器中使用,相當方便.即便用的vc6.0這樣的老古董也可以從網上找到一大把HyperLink控件的實現代碼.codeproject上的實現的都挺漂亮的.
此次項目開發中需要在一個地方放好幾個鏈接,它們排列密集-------這沒有關係,多拖幾次鼠標就行了-------但是他們的父窗口在運行的過程中需要改變大小,這些鏈接控件也要相應的改變其在窗口中的位置. 使用EasySize的話就要多寫十多行代碼,這挺麻煩的,於是我多寫了好幾百行代碼來消除這個煩惱,這就是LinkBox,繼承自CListCtrl。沒有繼承自CListBox的主要原因是我覺得CListCtrl的HitTest用起來很爽,而ListBox中壓根找不到HitTest。
它的功能需求應該是:
1. 一個控件內可以寫多個連接
2. 背景全透明
3. MouseHover的時候光標變化
4. 自定義顏色
它的效果是這樣的:
這份代碼中並沒有實現背景全透明,(添加背景全透明的話可以參考這個文章http://www.codeproject.com/KB/dialog/transparent-control.aspx),也沒有寫自定義顏色,但寫到這兒就已經完全滿足我的要求了,所以它的代碼就是這樣的,沒啥技術含量,主要就是自繪,響應MouseLeave消息可以消除本代碼中的一個不足,這不足你一用就知道,但對於我來說,恰好是個額外的功能,所以不做修改了:
cpp文件: