VC小技能匯總之控件技能。本站提示廣大學習愛好者:(VC小技能匯總之控件技能)文章只能為提供參考,不一定能成為您想要的結果。以下是VC小技能匯總之控件技能正文
本文匯集匯總了VC小技能的控件技能,關於停止VC開辟來講有必定的自創價值,詳細以下:
1.若何隱蔽和顯示控件
用CWnd類的函數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); //使按鈕處於許可狀況 m_Button1.EnableWindow(false); //使按鈕被制止,並變灰顯示
3.轉變控件的年夜小和地位
用CWnd類的函數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()函數應用更靈巧,多用於只修正控件地位而年夜小不變或只修正年夜小而地位不變的情形: BOOL SetWindowPos(const CWnd* pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags);
第一個參數普通設為NULL;
x、y控件地位;cx、cy控件寬度和高度;
nFlags經常使用取值:
SWP_NOZORDER:疏忽第一個參數;
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生成各單選按鈕的單擊新聞函數,並參加內容:
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時,它對應組的第一個單選按鈕處於選中狀況。
(4)設置默許按鈕:
在界說控件變量時,ClassWizard在結構函數中會把變量初值設為-1,只需把它改成其它值便可。
如:
//{{AFX_DATA_INIT(CWEditView) m_Ridio1 = 0; //初始時第一個單選按鈕被選中 m_Ridio4 = 0; //初始時第四個單選按鈕被選中 //}}AFX_DATA_INIT
4.扭轉控件(Spin)的應用
當單擊扭轉控件上的按鈕時,響應的編纂控件值會增年夜或減小。其設置的普通步調為:
(1)在對話框中放入一個Spin控件和一個編纂控件作為Spin控件的同伴窗口
設置Spin控件屬性:Auto buddy、Set buddy integer、Arrow keys
設置文本控件屬性:Number
(2)用ClassWizard為Spin控件界說變量m_Spin,為編纂控件界說變量m_Edit,界說時留意要把m_Edit設置為int型。
(3)在對話框的OnInitDialog()函數中參加語句:
BOOL CMyDlg::OnInitDialog() { CDialog::OnInitDialog(); m_Spin.SetBuddy( GetDlgItem( IDC_EDIT1 ) ); //設置編纂控件為Spin控件的同伴窗口 m_Spin.SetRange( 0, 10 ); //設置數據規模為0-10 return TRUE; }
(4)用ClassWizard為編纂控件添加EN_CHANGE新聞處置函數,再參加語句:
void CMyDlg::OnChangeEdit1() { m_Edit = m_Spin.GetPos(); //獲得Spin控件以後值 }
5.UpdateData()
關於可以吸收數據的控件,如編纂控件來講,UpdateData()函數相當主要。當控件內容產生變更時,對應的控件變量的值並沒有隨著變更,異樣,當控件變量值變更時,控件內容也不會隨著變。
UpdateData()函數就是處理這個成績的。
UpdateData(true); 把控件內容裝入控件變量
UpdateData(false); 用控件變量的值更新控件
如:有編纂控件IDC_EDIT1,對應的變量為字符串m_Edit1,
(1)修正變量值並顯示在控件中:
m_Edit1 = _T("成果為50"); UpdateData(false);
(2)讀取控件的值到變量中:
用ClassWizard為IDC_EDIT1添加EN_CHANGE新聞處置函數,這個函數在編纂控件內容產生變更時履行。
void CEditView::OnChangeEdit1() { UpdateData(true); //更新變量值 }