vs如何在组合框获取当前时间
答案:2 悬赏:0 手机版
解决时间 2021-02-01 13:23
- 提问者网友:我没有何以琛的痴心不悔
- 2021-01-31 13:22
vs如何在组合框获取当前时间
最佳答案
- 五星知识达人网友:大漠
- 2021-01-31 14:14
打开Demo项目,在对话框中添加3个组合框,1个编辑框,1个静态文本以及1个按钮。
程序功能:通过第二个组合框选择加减乘除,第1个组合框选择数据,第3个组合框既可以选择数据,也可以输入数据;点击计算按钮计算结果并送入编辑框显示。
打开组合框的属性页,可以在data属性中直接添加数据,用分号隔开,再把sort改为false,否则数据的就会按它的排序方式进行排序,而不一定是数据输入的顺序了。最后说是Type属性,这个用于修改组合框的款式:
Simple:一般不用;
Drop Down:默认,可以输入数据,也可以选择数据;
Drop List:只能选择数据,无法输入数据;
第1个组合框选择Drop Down,data改为:10;20;30;40;50
第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_num2;CComboBox 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 + num2; break;
case 1:m_result = num1 - num2; break;
case 2:m_result = num1 * num2; break;
case 3:m_result = num1 / num2; break;
}
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个组合框选择数据,第3个组合框既可以选择数据,也可以输入数据;点击计算按钮计算结果并送入编辑框显示。
打开组合框的属性页,可以在data属性中直接添加数据,用分号隔开,再把sort改为false,否则数据的就会按它的排序方式进行排序,而不一定是数据输入的顺序了。最后说是Type属性,这个用于修改组合框的款式:
Simple:一般不用;
Drop Down:默认,可以输入数据,也可以选择数据;
Drop List:只能选择数据,无法输入数据;
第1个组合框选择Drop Down,data改为:10;20;30;40;50
第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_num2;CComboBox 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 + num2; break;
case 1:m_result = num1 - num2; break;
case 2:m_result = num1 * num2; break;
case 3:m_result = num1 / num2; break;
}
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楼网友:酒安江南
- 2021-01-31 15:51
搜一下:vs如何在组合框获取当前时间
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯