养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

VS2013/MFC基于对话框编程:[17]组合框

时间:2024-09-29 23:36:26

组合框是对话框中的常用控件之一,可以说是列表框和编辑框的组合体,既可以选择已有的内容,也可以输入新的内容。本经验通过简单例子进行说明组合框的使用方法。

VS2013/MFC基于对话框编程:[17]组合框

工具/原料

VisualStudio2013

方法/步骤

1、打开Demo项目,在对话框中添加3个组合框,1个编辑框,1个静态文本以及1个按钮。程序功能:通过第二个组合框选择加减乘除,第1个组合框选择数据,第3个组合框既可以选择数据,也可以输入数据;点击计算按钮计算结果并送入编辑框显示。

VS2013/MFC基于对话框编程:[17]组合框

VS2013/MFC基于对话框编程:[17]组合框

2、打开组合框的属性页,可以在data属性中直接添加数据,用分号隔开,再把sort改为false,否则数据的就会按它的排序方式进行排序,而不一定是数据输入的顺序了。最后说是Type属性,这个用于修改组合框的款式:Simple:一般不用;DropDown:默认,可以输入数据,也可以选择数据;DropList:只能选择数据,无法输入数据;第1个组合框选择DropDown,data改为:10;20;30;40;50第2个组合框选择DropList,data添加为+;-;*;/第3个组合框选择DropDown,data暂时不填;所有组合框的sort属性均为false。

VS2013/MFC基于对话框编程:[17]组合框

3、修改ID:组合框1:IDC_Num1;组合框2:IDC_Algor;组合框3:IDC_Num2;编辑框:IDC_Result;按钮:IDC_CALC;

VS2013/MFC基于对话框编程:[17]组合框

4、添加变量:组合框1:CComboBoxm_num1;组合框2:CComboBoxm_algor;组合框3:CStringm_num2;CComboBoxm_num2Control;编辑框:doublem_result;添加函数:按钮按下事件处理函数:OnBnClickedCalc()

VS2013/MFC基于对话框编程:[17]组合框

5、修改初始化函数OnInitDi瞢铍库祢alog():通过组合框的成员函数AddString给第3个组合框添加剐疫柩缓项5; m_num2Control.AddString(_T("1")); m_num2Control.AddString(_T("2")); m_num2Control.AddString(_T("3")); m_num2Control.AddString(_T("4")); m_num2Control.AddString(_T("5"));将三个组合框的默认选项设为第一项: m_num2Control.SetCurSel(0); m_num1.SetCurSel(0); m_algor.SetCurSel(0);

VS2013/MFC基于对话框编程:[17]组合框

6、编写按钮按下事件处理函数,先获取数据,然后根据选择的算法计算结果,最后进行更新跷孳岔养。 UpdateData烫喇霰嘴(true); m_result=0; doublenum1=(m_num1.GetCurSel()+1)*10; doublenum2=atof(str2char(m_num2));//str2char是自己写的函数,下一步有解释 switch(m_algor.GetCurSel()) { case0:m_result=num1+num2;break; case1:m_result=num1-num2;break; case2:m_result=num1*num2;break; case3:m_result=num1/num2;break; } UpdateData(false);

VS2013/MFC基于对话框编程:[17]组合框

7、由于螅岔出礤在unicode编码中,无法直接从CString转换到constchar*,隐藏atof函数无法直接把字符串转换为浮点型数据,需要经过中间转换步骤将字符串类型转为const惺绅寨瞀char*类型。这就是str2char需要完成的任务:char*CDemoDlg::str2char(CStringstr){ char*ptr;#ifdef_UNICODE LONGlen; len=WideCharToMultiByte(CP_ACP,0,str,-1,NULL,0,NULL,NULL); ptr=newchar[len+1]; memset(ptr,0,len+1); WideCharToMultiByte(CP_ACP,0,str,-1,ptr,len+1,NULL,NULL);#else ptr=newchar[str.GetAllocLength()+1]; sprintf(ptr,_T("%s"),str);#endif returnptr;}这个函数大家可以保存下来,相信肯定会有用到的时候。

VS2013/MFC基于对话框编程:[17]组合框

8、测试程序功能,启动调试,选择算法,选择数据或者输入数据,点击计算得出结果。

VS2013/MFC基于对话框编程:[17]组合框

VS2013/MFC基于对话框编程:[17]组合框

VS2013/MFC基于对话框编程:[17]组合框

VS2013/MFC基于对话框编程:[17]组合框

VS2013/MFC基于对话框编程:[17]组合框

© 一点知识