如何進行Visual C++界面編程
下面主要講述學(xué)習(xí)Visual C++界面時碰到的有關(guān)困難和問題,以及學(xué)習(xí)Visual C++界面時的技巧說明,如何更好的進行Visual C++界面的學(xué)習(xí)等相關(guān)問題介紹,歡迎大家學(xué)習(xí)參考。
為了能有這個功能,我寫了下面的這個函數(shù)。首先得在你的對話框中添加一個的WM_CTLCOLOR的消息句柄,或者使用CComboBox的繼承類,而且在其中添加下面的代碼:這樣之后還沒有完全好,你還得刷新一下列表框。
那樣才能隨時根據(jù)列表框中的文本的長度,而改變列表框的寬度,要想這樣的話,你還得這樣。你必須掃描列表框中的條目,還得計算其中文本的長度(通過pdc),這樣你如果再刷新列表框的話,才能一條目中比較長的來顯示。上面的方法是通過WM_CTLCOLOR消息來實現(xiàn)的,后來才知道在MFC的CComboBox類中有一個函數(shù)也可以實現(xiàn)同樣的功能,就是:
- BOOL CSampleDialog : : OnInitDialog ( )
- {
- CDialog : : OnInitDialog ( ) ;
- //Get pointer to spin button .
- CSpinButtonCtrl * pSpin - ( CSpinButtonCtrl *) GetDlgItem (IDC_SPIN) ;
- ASSERT _ VALID (pSpin) ;
- //Set spin buttons default position .
- pSpin —> SetPos (10) ;
- return TRUE ;
- }
在實現(xiàn)高彩色工具條之前,先研究一下普通16色的工具條的實現(xiàn)過程,并從中總結(jié)出改進方法。在VC的資源視圖中工具條是一個資源名為Visual C++界面資源,并可通過在編輯按鈕上的圖標來完成工具條上圖標的繪制。雖然在資源視圖中工具條上各按鈕的圖標是相互獨立的。
但在存儲時并非像圖標一樣保存為ico格式文件而是以bmp位圖格式保存在磁盤上的。該位圖是一個由工具條上的按鈕圖標組成的長條型位圖圖像,中間沒有任何縫隙,在程序運行和在資源視圖對工具條進行編輯時該圖像首先裝載到一個圖像列表中。
然后工具欄根據(jù)索引依次從圖像列表中將圖像顯示到工具條的各個按鈕上。由于Visual C++界面限制工具欄上的圖標不能超出16色,因此不論是在資源視圖直接編輯位圖還是用復(fù)制粘貼等手段均無法獲取超出256色的工具條(注:用復(fù)制粘貼的方法雖然在編輯視圖中可以暫時顯示出256色的圖標,但在程序運行時仍會退化成16色)。
由于不能在資源視圖中通過編輯Toolbar資源實現(xiàn)16色以上的圖標,加之工具條在顯示時有并不直接從Toolbar獲取圖標而是從圖像列表中讀取,因此可以通過其他一些圖像處理軟件做好類似于工具條的bmp圖像(僅顏色比普通工具條bmp圖像豐富,其余完全一樣)。
并以位圖的形式加入到程序資源。在使用時,先將其讀取到圖像列表,這樣圖像列表中用于顯示到工具條上的圖標的顏色就可以是256、24位、甚至32位色的了。由于工具條缺省時將直接加載資源名為Visual C++界面為圖標的來源,因此還必須通過SetImageList()函數(shù)將含有高彩色工具條位圖的圖像列表指定為工具條的圖標來源。
【編輯推薦】