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