静态文本控件
通过函数显示静态文本控件的显示文本
首先为静态文本控件关联一个CStatic类型的变量,然后调用SetWindowText函数设置显示文本
m_Static.SetWindowText("你好啊");
设置静态文本控件中的文本颜色
首先设置静态文本控件显示的文本,然后处理对话框的WM_CTLCOLOR消息,在该消息中调用SetTextColor函数设置文本颜色
if(nCtlColor==CTLCOLOR_STATIC) pDC->SetTextColor(RGB(255,0,0));
模拟按钮控件的单击事件
在使用该事件之前,需要选择静态文本控件的Notify属性,否则无法实现单击功能。
编辑框控件
设置密码编辑框
通过编辑框的Password属性可以设置编辑框中的文本密码显示。打开控件的属性窗口,选择Password属性。
设置只读编辑框
设置编辑框控件只读,设置为只读编辑框后,用户不能对控件中的内容进行编辑。打开控件的属性窗口,选择Read-only属性。
设置编辑框多行显示
通过编辑框的Multiine属性进行多行显示,在使用代码输入字符串时,换行时需要输入" "。
设置编辑框按Enter键换行
即使选择了编辑框的Multiine属性,在输入时还是会碰到无法输入多行的情况,因为在输入时无法进行换行,当在编辑框中按Enter键时就关闭了对话框
这时可以选择编辑框的Want return属性,然后在编辑框中按Enter键时即可换到下一行而不关闭对话框。
CEdit m_edit; CString m_editstr; CString str; m_edit.GetWindowText(str); MessageBox(str); UpdateData(true); MessageBox(m_editstr);
按钮控件
使用按钮控件显示图标
使用按钮显示图标,首先向对话框中导入一个图标资源,然后打开按钮控件的属性窗口,选择Icon属性,然后为按钮控件关联一个CButton类的变量,使用CButton类的SetIcon方法来实现。
HICON SetIcon(HICON hIcon); 其中,hIcon表示一个图标句柄
使用按钮控件显示图标
m_Button.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1)); //设置图标
复选框控件
设置复选框控件的选中状态
复选框的初始状态是非选中状态,要设置复选框的选中状态可以使用SetCheck方法,用于设置复选框是否处于选中的状态
void SetCheck(int nCheck); 其中nCheck表示复选框的状态。
CButton m_Arith; CButton m_Chinese; m_Chinese.EnableWindow(FALSE); m_Chinese.SetCheck(1); m_Arith.EnableWindow(FALSE); m_Arith.SetCheck(1);
使用EnableWindow方法可以设置控件是否可用,通过控件的属性也可实现这一功能,只要选中控件的Disabled属性就可以使控件不可用,不选中时控件可用。
使用复选框控件统计信息
调用GetCheck方法获得控件的选中状态
int GetCheck() const;
CString ID,Name; GetDlgItem(IDC_EDIT1)->GetWindowText(ID); GetDlgItem(IDC_EDIT2)->GetWindowText(Name); CString str,text; str = "学号:" + ID + "姓名:" + Name + " "; str += "必修科目:语文、数学 选修科目:"; for(int i=0;i<6;i++) { CButton* but = (CButton*)GetDlgItem(IDC_CHECK3+i); if(but->GetCheck()==1) { but->GetWindowText(text); str += text + "、"; } } str = str.Left(str.GetLength()-2); MessageBox(str);
使用GetDlgItem函数可以获得指定控件的窗口指针。
单选按钮控件
为单选按钮控件分组
默认情况下,所有单选按钮都被视为一组。要为单选按钮分组,在属性窗口中选择General选项卡中的Group属性,以Tab键顺序为基础。Group属性是设置控件的群组关系的属性,为一个单选按钮选择了Group属性,以Tab键顺序为准,在这个单选按钮以后没有选择该属性的单选按钮都划为一组,而分为一组的单选按钮可以共用一个成员变量。
void CGetRadioDlg::OnRadio1() { // TODO: Add your control notification handler code here m_Radio = 1; } void CGetRadioDlg::OnButtonok() { // TODO: Add your control notification handler code here CString str; CButton* Radiobutton = (CButton*)GetDlgItem(IDC_RADIO1 + m_Radio - 1); Radiobutton->GetWindowText(str); MessageBox(str); }
使用整型变量记录选中单选按钮的方法要比遍历窗体中所有单选按钮方便得多。
组合框控件
获取选择的数据
要获得组合框中部分的数据,首先要获得当前选择的列表项索引,可以使用GetCurSel方法实现。
获得当前选择的列表项索引后,还要根据指定的索引获得数据,可以使用GetLBText方法获取列表框中的字符串。
void GetLBText(int nIndex,CString& rString) const;
nIndex:表示方法返回的项目索引(基于0开始)
rString:用于接收返回的字符串
CComboBox m_Combo; void CGetComboDlg::OnSelchangeCombo1() { // TODO: Add your control notification handler code here int pos = m_Combo.GetCurSel(); CString str; m_Combo.GetLBText(pos,str); MessageBox(str); }
列表框控件
避免插入重复数据
CString str; m_Text.GetWindowText(str); int num = m_List.GetCount(); for(int i=0;i<num;i++) { CString Text; m_List.GetText(i,Text); if(Text == str) { MessageBox("数据已存在!"); return; } } m_List.AddString(str);
实现复选数据功能
可以通过CCheckListBox类在列表框控件中实现复选数据功能
CCheckListBox类是对CListBox类的扩充,使列表框控件具有复选功能
通过GetCheck方法可以判断当前列表项的复选框是否被选中
int GetCheck(int nIndex) nIndex表示标识项目索引
向对话框中添加列表框,设置Owner draw属性为设置为Fixed(LBS_OWNERDRAWFIXED,该属性用于确定控件的所有者如何绘制控件),
Has strings设置为True (LBS_HASSTRINGS,该属性用于标识一个Owner-draw列表框中的项目由字符串组成)
CCheckListBox m_List; CString strText=""; int num = m_List.GetCount(); for(int i=0;i<num;i++) { if(m_List.GetCheck(i)) { CString str; m_List.GetText(i,str); strText += str; } } MessageBox(strText);