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