程序功能:通过第二个组合框选择加减乘除,第1个组合框选择数据,第3个组合框既可以选择数据,也可以输入数据;点击计算按钮计算结果并送入编辑框显示。
打开组合框的属性页,可以在data属性中直接添加数据,用分号隔开,再把sort改为false,否则数据的就会按它的排序方式进行排序,而不一定是数据输入的顺序了。最后说是Type属性,这个用于修改组合框的款式:
Simple:一般不用;
Drop Down:默认,可以输入数据,也可以选择数据;
Drop List:只能选择数据,无法输入数据;
第1个组合框选择Drop Down,data改为:1020304050
第2个组合框选择Drop List,data添加为+-*/
第3个组合框选择Drop Down,data暂时不填;
所有组合框的sort属性均为false。
修改ID:
组合框1:IDC_Num1;组合框2:IDC_Algor;组合框3:IDC_Num2;
编辑框:IDC_Result;按钮:IDC_CALC;
添加变量:
组合框1:CComboBox m_num1
组合框2:CComboBox m_algor
组合框3:CString m_num2CComboBox m_num2Control
编辑框:double m_result
添加函数:
按钮按下事件处理函数:OnBnClickedCalc()
修改初始化函数OnInitDialog():
通过组合框的成员函数AddString给第3个组合框添加项1、2、3、4、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)
编写按钮按下事件处理函数,先获取数据,然后根据选择的算法计算结果,最后进行更新。
UpdateData(true)
m_result = 0
double num1 = (m_num1.GetCurSel() + 1) * 10
double num2 = atof(str2char(m_num2))
//str2char是自己写的函数,下一步有解释
switch (m_algor.GetCurSel())
{
case 0:m_result = num1 + num2break
case 1:m_result = num1 - num2break
case 2:m_result = num1 * num2break
case 3:m_result = num1 / num2break
}
UpdateData(false)
由于在unicode编码中,无法直接从CString转换到const char*,隐藏atof函数无法直接把字符串转换为浮点型数据,需要经过中间转换步骤将字符串类型转为const char*类型。这就是str2char需要完成的任务:
char* CDemoDlg::str2char(CString str)
{
char *ptr
#ifdef _UNICODE
LONG len
len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL)
ptr = new char[len + 1]
memset(ptr, 0, len + 1)
WideCharToMultiByte(CP_ACP, 0, str, -1, ptr, len + 1, NULL, NULL)
#else
ptr = new char[str.GetAllocLength() + 1]
sprintf(ptr, _T("%s"), str)
#endif
return ptr
}
这个函数大家可以保存下来,相信肯定会有用到的时候。
测试程序功能,启动调试,选择算法,选择数据或者输入数据,点击计算得出结果。
1、用VS2012新建一个VB窗口应用程序,进入窗体设计视图,添加一个菜单。
2、右击需要更改为组合框的菜单项,在d出的内容选择“转换为”->"ComboBox"。
3、对应的菜单项便由按钮变成了组合框。
4、运行程序可以看到刚刚添加的“串口”菜单项是以组合框的形式出现的。
5、结束调试,回到窗体设计,右击“串口”菜单项,选择“属性”。
6、关注“设计”下的Name,这个就是刚刚添加的组合框菜单项的名称,可以通过这个名称对该菜单项进行 *** 作,可以看到在VS2012的VB中是可以使用汉字作为控件名称的。
7、在窗体的Load事件中添加该组合框的初始化代码,即添加“串口1”、“串口2”、“串口3”等。
如果是可视化 *** 作,先加一控件,再拖放groupBox在其背后
如果动态创建控件,那就高度灵活,只要将其父控件理解成窗口,自然可以在该窗口中做任何东西,包括,再添加控件。
更多交流参考我空间文章发。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)