VCテクニック要約のコントロールテクニック

4641 ワード

本文は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);

1つ目の使い方は、コントロールの新しい座標と幅、高さを与える必要があります.第2の使用法は、格納位置の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.ラジオボタンコントロールの使用
(1)ラジオボタンをグループ化する:
各グループの最初のラジオボタン設定プロパティ:Group,Tabstop,Auto;残りのボタンはプロパティTabstop,Autoを設定します.例えば、Radio 1、Radio 2、Radio 3が一組、Radio 4、Radio 5が一組に設定Radio 1属性:Group、Tabstop、Auto設定Radio 2属性:Tabstop、Auto設定Radio 3属性:Tabstop、Auto設定Radio 4属性:Group、Tabstop、Auto設定Radio 5属性:Tabstop、Auto
(2)ClassWizardでラジオコントロールの変数を定義し、各グループに1つしか定義できません.例:m_Radio 1、m_Radio 4.
(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_があります.EDIT 1、対応する変数は文字列m_Edit1,
(1)変数の値を変更し、コントロールに表示する.

m_Edit1 = _T("   50");
UpdateData(false);

(2)コントロールの値を変数に読み込む:
ClassWizardをIDC_とするEDIT 1 EN_を追加CHANGEメッセージ処理関数.この関数は、編集コントロールの内容が変化したときに実行されます.

void CEditView::OnChangeEdit1()
{
  UpdateData(true);  //     
}