資源描述:
《VC界面編程總結(jié).pdf》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、VC界面編程總結(jié)2006-09-2615:52[前言:]擁有美麗的外觀,軟件就成功了一半。界面由控件、工具欄、菜單、窗體等元素組成,對他們進(jìn)行美化就能得到一個美麗的界面。讓控件更醒目在ComboBox中改變列表框的寬度我們經(jīng)常會使用到組合框,而組合框是是有2種功能的--下拉和列表。一般情況下,列表框的寬度和選擇框是一樣寬的,但是我們有些時候確實(shí)很需要把列表框的寬度變大,一便讓我們能更好的看我們要選的東西。為了能有這個功能,我寫了下面的這個函數(shù)。首先得在你的對話框中添加一個的WM_CTLCOLOR的消息句柄,或者使用CComboBox的繼承類,而且在其中添加下面的代碼:HBrus
2、htvisualcombo::onctlcolor(CDC*pdc,CWND*pwnd,UINTnctlcolor){HBrushhbr=ccombobox::onctlcolor(pdc,pwnd,nctlcolor);switch(nctlcolor){casectlcolor_edit:break;casectlcolor_listbox:if(listwidth>0){//newwidthofalistboxisdefinedCRectrect;pwnd->GetWindowRect(&rect);if(rect.Width()!=listwidth){rect.rig
3、ht=rect.left+listwidth;pwnd->MoveWindow(&rect);}}break;}//todo:returnadifferentbrushifthedefaultisnotdesiredreturnhbr;}這樣之后還沒有完全好,你還得刷新一下列表框,那樣才能隨時根據(jù)列表框中的文本的長度,而改變列表框的寬度,要想這樣的話,你還得這樣,你必須掃描列表框中的條目,還得計(jì)算其中文本的長度(通過pdc),這樣你如果再刷新列表框的話,才能一條目中比較長的來顯示。上面的方法是通過WM_CTLCOLOR消息來實(shí)現(xiàn)的,后來才知道在MFC的CComboBox類中有一
4、個函數(shù)也可以實(shí)現(xiàn)同樣的功能,就是:CComboBox::SetDroppedWidth(intwidth);通過這個函數(shù),你可以把寬度設(shè)成你自己喜歡的值,而它的實(shí)際的寬度是下面2個值中的最大值:1.你所設(shè)置的值(就是通過上面的函數(shù)所設(shè)置的值)2.列表框的值如何獲取一個對話控件的指針有兩種方法。其一,調(diào)用CWnd::GetDlgItem,獲取一個CWnd*指針調(diào)用成員函數(shù)。下例調(diào)用GetDlgItem,將返回值傳給一個CSpinButtonCtrl*以便調(diào)用CSpinButtonCtrl::SetPos函數(shù):BOOLCSampleDialog::OnInitDialog(){CD
5、ialog::OnInitDialog();//Getpointertospinbutton.CSpinButtonCtrl*pSpin-(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN);ASSERT_VALID(pSpin);//Setspinbuttonsdefaultposition.pSpin—>SetPos(10);returnTRUE;}其二,可以使用ClassWizard將控件和成員變量聯(lián)系起來。在ClassWizard中簡單地選擇MemberVariables標(biāo)簽,然后選擇AddVariable…按鈕。如果在對話資源編輯器中,按下Ct
6、rl鍵并雙擊控件即可轉(zhuǎn)到AddMemberVariable對話。VC中如何改變對框中控件的顏色在VC中,當(dāng)我們大量的運(yùn)用控件時,往往會為改變控件的顏色所煩惱。因?yàn)閂C不象VB那樣,可以方便地改變對話框及各個控件的顏色,要改變一個控件的顏色比較煩瑣。本文所介紹的就是如何改變在一個對框上的控件的顏色。步驟如下:①先創(chuàng)建一個基于對話框的工程,命名為test,然后在對話框上加入一個ListBox控件。②在testDlg.h中加入一個成員變量:CBrushm_brush;③在OnInitDialog()中,加入m_brush.CreateSolidBrush(RGB(0,0,0);此處設(shè)
7、置的RGB值可以改變ListBox的背景色。為了觀看ListBox中字的顏色變化,我們給ListBox加入幾個字:利用ClassWizard給ListBox加入一個Control類型的成員變量m_ctrlListBox,然后在OnInitDialog()加入如下所示的代碼:m_ctrlListBox.AddString("1號選手");m_ctrlListBox.AddString("2號選手");④點(diǎn)擊ClassWizard,給testDlg加入WM_CTLCOLOR事件,單擊EditCo