VC小技巧匯總之控件技巧
本文搜集匯總了VC小技巧的控件技巧,對于進行VC開發(fā)來說有一定的借鑒價值,具體如下:
1.如何隱藏和顯示控件
用CWnd類的函數(shù)BOOL ShowWindow(int nCmdShow)可以隱藏或顯示一個控件。
例1:
CWnd *pWnd; pWnd = GetDlgItem( IDC_EDIT1 ); //獲取控件指針,IDC_EDIT為控件ID號 pWnd->ShowWindow( SW_HIDE ); //隱藏控件
例2:
CWnd *pWnd; pWnd = GetDlgItem( IDC_EDIT1 ); //獲取控件指針,IDC_EDIT為控件ID號 pWnd->ShowWindow( SW_SHOW ); //顯示控件
2.按鈕的使能與禁止
用ClassWizard的Member Variables為按鈕定義變量,如:m_Button1;
則
m_Button1.EnableWindow(true); //使按鈕處于允許狀態(tài) m_Button1.EnableWindow(false); //使按鈕被禁止,并變灰顯示
3.改變控件的大小和位置
用CWnd類的函數(shù)MoveWindow()或SetWindowPos()可以改變控件的大小和位置。
void MoveWindow(int x,int y,int nWidth,int nHeight); void MoveWindow(LPCRECT lpRect);
第一種用法需給出控件新的坐標和寬度、高度;
第二種用法給出存放位置的CRect對象;
例:
CWnd *pWnd; pWnd = GetDlgItem( IDC_EDIT1 ); //獲取控件指針,IDC_EDIT1為控件ID號 pWnd->MoveWindow( CRect(0,0,100,100) ); //在窗口左上角顯示一個寬100、高100的編輯控件 SetWindowPos()函數(shù)使用更靈活,多用于只修改控件位置而大小不變或只修改大小而位置不變的情況: BOOL SetWindowPos(const CWnd* pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags);
第一個參數(shù)一般設為NULL;
x、y控件位置;cx、cy控件寬度和高度;
nFlags常用取值:
SWP_NOZORDER:忽略第一個參數(shù);
SWP_NOMOVE:忽略x、y,維持位置不變;
SWP_NOSIZE:忽略cx、cy,維持大小不變;
例:
CWnd *pWnd; pWnd = GetDlgItem( IDC_BUTTON1 ); //獲取控件指針,IDC_BUTTON1為控件ID號 pWnd->SetWindowPos( NULL,50,80,0,0,SWP_NOZORDER | SWP_NOSIZE ); //把按鈕移到窗口的(50,80)處 pWnd = GetDlgItem( IDC_EDIT1 ); pWnd->SetWindowPos( NULL,0,0,100,80,SWP_NOZORDER | SWP_NOMOVE ); //把編輯控件的大小設為(100,80),位置不變 pWnd = GetDlgItem( IDC_EDIT1 ); pWnd->SetWindowPos( NULL,0,0,100,80,SWP_NOZORDER ); //編輯控件的大小和位置都改變
以上方法也適用于各種窗口。
4.單選按鈕控件(Radio Button)的使用
(1)對單選按鈕進行分組:
每組的第一個單選按鈕設置屬性:Group,Tabstop,Auto;其余按鈕設置屬性Tabstop,Auto。
如:
Radio1、Radio2、Radio3為一組,Radio4、Radio5為一組
設定Radio1屬性:Group,Tabstop,Auto
設定Radio2屬性:Tabstop,Auto
設定Radio3屬性:Tabstop,Auto
設定Radio4屬性:Group,Tabstop,Auto
設定Radio5屬性:Tabstop,Auto
(2)用ClassWizard為單選控件定義變量,每組只能定義一個。如:m_Radio1、m_Radio4。
(3)用ClassWizard生成各單選按鈕的單擊消息函數(shù),并加入內(nèi)容:
void CWEditView::OnRadio1() { m_Radio1 = 0; //第一個單選按鈕被選中 } void CWEditView::OnRadio2() { m_Radio1 = 1; //第二個單選按鈕被選中 } void CWEditView::OnRadio3() { m_Radio1 = 2; //第三個單選按鈕被選中 } void CWEditView::OnRadio4() { m_Radio4 = 0; //第四個單選按鈕被選中 } void CWEditView::OnRadio5() { m_Radio4 = 1; //第五個單選按鈕被選中 }
當控件變量值為0時,它對應組的第一個單選按鈕處于選中狀態(tài)。
(4)設置默認按鈕:
在定義控件變量時,ClassWizard在構(gòu)造函數(shù)中會把變量初值設為-1,只需把它改為其它值即可。
如:
//{{AFX_DATA_INIT(CWEditView) m_Ridio1 = 0; //初始時第一個單選按鈕被選中 m_Ridio4 = 0; //初始時第四個單選按鈕被選中 //}}AFX_DATA_INIT
4.旋轉(zhuǎn)控件(Spin)的使用
當單擊旋轉(zhuǎn)控件上的按鈕時,相應的編輯控件值會增大或減小。其設置的一般步驟為:
(1)在對話框中放入一個Spin控件和一個編輯控件作為Spin控件的伙伴窗口
設置Spin控件屬性:Auto buddy、Set buddy integer、Arrow keys
設置文本控件屬性:Number
(2)用ClassWizard為Spin控件定義變量m_Spin,為編輯控件定義變量m_Edit,定義時注意要把m_Edit設置為int型。
(3)在對話框的OnInitDialog()函數(shù)中加入語句:
BOOL CMyDlg::OnInitDialog() { CDialog::OnInitDialog(); m_Spin.SetBuddy( GetDlgItem( IDC_EDIT1 ) ); //設置編輯控件為Spin控件的伙伴窗口 m_Spin.SetRange( 0, 10 ); //設置數(shù)據(jù)范圍為0-10 return TRUE; }
(4)用ClassWizard為編輯控件添加EN_CHANGE消息處理函數(shù),再加入語句:
void CMyDlg::OnChangeEdit1() { m_Edit = m_Spin.GetPos(); //獲取Spin控件當前值 }
5.UpdateData()
對于可以接收數(shù)據(jù)的控件,如編輯控件來說,UpdateData()函數(shù)至關重要。當控件內(nèi)容發(fā)生變化時,對應的控件變量的值并沒有跟著變化,同樣,當控件變量值變化時,控件內(nèi)容也不會跟著變。
UpdateData()函數(shù)就是解決這個問題的。
UpdateData(true); 把控件內(nèi)容裝入控件變量
UpdateData(false); 用控件變量的值更新控件
如:有編輯控件IDC_EDIT1,對應的變量為字符串m_Edit1,
(1)修改變量值并顯示在控件中:
m_Edit1 = _T("結(jié)果為50"); UpdateData(false);
(2)讀取控件的值到變量中:
用ClassWizard為IDC_EDIT1添加EN_CHANGE消息處理函數(shù),這個函數(shù)在編輯控件內(nèi)容發(fā)生變化時執(zhí)行。
void CEditView::OnChangeEdit1() { UpdateData(true); //更新變量值 }
您可能感興趣的文章
- 01-10異步http listener 完全并發(fā)處理懲罰http懇求的小例子
- 01-10節(jié)序問題:解析大小的端判定
- 01-10基于大端法、小端法以及網(wǎng)絡字節(jié)序的深入理解
- 01-10探討:用兩個棧實現(xiàn)一個隊列(我作為面試官的小結(jié))
- 01-10解決不用sizeof求出int大小的方法
- 01-10C語言數(shù)組指針的小例子
- 01-10c語言在控制臺判定鼠標左鍵的小例子
- 01-10解析四則表達式的編譯過程及生成匯編代碼
- 01-10C語言運算符及其優(yōu)先級匯總表口訣
- 01-10C語言編程時常犯十八個錯誤小結(jié)


閱讀排行
本欄相關
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11ajax實現(xiàn)頁面的局部加載
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10C#中split用法實例總結(jié)
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改