CHECK BOX 使用

对于复选框个数不多的情况下可以使用如下:

设置  
  ((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(TRUE);  
   
  读取  
  DWORD   dwState   =   ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();

 

或者:

有三个Check   box,想对各种情况(被选中或未被选中)进行判断,做出不同的操作。   
    三个Check   box   是:IDC_CHECK1/2/3  
  分别给它们的控制变量是   m_Check1/2/3  

 

 CButton*   m_Check1   =   (CButton*)m_wndDlg.GetDlgItem(IDC_CHECK1);  
  CButton*   m_Check2   =   (CButton*)m_wndDlg.GetDlgItem(IDC_CHECK2);  
  CButton*   m_Check3   =   (CButton*)m_wndDlg.GetDlgItem(IDC_CHECK3);  
   
  if(m_Check1.GetCheck()   ==   BST_UNCHECKED)  
          m_Check1.SetCheck(BST_CHECKED);  
  else  
          m_Check1.SetCheck(BST_UNCHECKED);

 

如果有很多复选框并且对复选框的处理都一样,则应使用消息映射宏ON_CONTROL_RANGE 

 

  单选钮和复选框都可以响应BN_CLICKED消息,如果一组中有多个单选钮,分别创建消息处理函数就比较麻烦了,利用MFC的消息映射宏ON_CONTROL_RANGE可以避免这种麻烦,该映射宏把多个ID连续的控件发出的消息映射到同一个处理函数上,这样,我们只要编写一个消息处理函数就可以对一组单选钮的BN_CLICKED消息作出响应,ClassWizard不支持该宏,必须手工创建。
ON_CONTROL_RANGE消息映射宏的第一个参数是控件消息码,第二和第三个参数分别指明了一组连续的控件ID中的头一个和最后一个ID,最后一个参数是消息处理函数名。注意,起始、 终止ID号必须是连续的,如果不能确定该组控件的ID是否是连续,请用View->Resource Symbols…命令检查控件的ID值,如果发现两个ID是不连续的,读者可以改变对ID的定义值使之连续,但要注意改动后的值不要与别的ID值发生冲突。

 

首先在C***Dlg.cpp中的消息映射中加入

BEGIN_MESSAGE_MAP(CInitCoach, CDialog)
 //{{AFX_MSG_MAP(CInitCoach)

   ……
  ON_CONTROL_RANGE(BN_CLICKED,IDC_CHECK1,IDC_CHECK6,OnCoachNoChecked)
 //}}AFX_MSG_MAP 
END_MESSAGE_MAP()

然后在对话框类的头文件的AFX_MSG 块中声明消息处理函数

//{{AFX_MSG(CMyView)
……

afx_msg void OnCoachNoChecked(UINT nCmdID);
//}}AFX_MSG
 DECLARE_MESSAGE_MAP()

 

最后,在对话框类所在CPP文件的最后插入消息处理函数,如下所示:

void CInitCoach::OnCoachNoChecked(UINT nCmdID)
{
 CString ss;
 ss.Format("%d",nCmdID);
 MessageBox(ss);
}

 

出处:http://www.vckbase.com/document/viewdoc/?id=1679


http://blog.ednchina.com/cbqcgq/18619/message.aspx

 

另外:

http://blog.csdn.net/Sephoenix/archive/2009/03/19/4004817.aspx

 

多个复选框进行相同的处理,写入数据库示例:

测试按钮对应代码:

void CInitCoach::OnBtnTest()
{
 // TODO: Add your control notification handler code here
// DWORD   dwState   =   ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();
// if (1==dwState)
// {
//  CString aa;
//  GetDlgItem(IDC_CHECK1)->GetWindowText(aa);
//  MessageBox(aa);
// }
 CString strSQL;
 CDBOperation predDB;
 predDB.InitDB();
 
 for (UINT nCmdID=1055;nCmdID<=1060;nCmdID++)
 {
  if(((CButton*)GetDlgItem(nCmdID))->GetCheck()==BST_CHECKED)
  {
   int predCoachNo=nCmdID-1045;
   strSQL.Format("insert into coachpred values(%d)",predCoachNo);
   predDB.ExecuteSQL(strSQL);
  }
 }
 predDB.ReleaseDB();

}

 

重新发车按钮对应代码:

void CInitCoach::OnBtnReout()
{
 // TODO: Add your control notification handler code here
 CDBOperation dePredDB;
 dePredDB.InitDB();
 dePredDB.ExecuteSQL("delete from coachpred");
 dePredDB.ReleaseDB();
}

 

CHECK BOX 使用_第1张图片 

你可能感兴趣的:(VC学习,insert,mfc,delete,数据库,测试,c)