MFC 使用类向导为控件关联变量

原创 2015年07月09日 10:07:16

创建一个对话框工程
设计界面如图
这里写图片描述
设置控件名称对应的控件ID

操作数1:IDC_FIRSTOPT
组合框 :IDC_SYMBO
操作数2:IDC_SECOPT
结果 :IDC_RET
计算按钮:IDC_CALC

选择运算符组合框控件
在属性框中选择Data选项卡 添加运算符 用分号分隔
这里写图片描述

设置type为 drop list,owner draw 为No。
右键类向导添加成员变量
这里写图片描述

向工程中添加一个实现计算功能的类模版

enum Symbo{PLUS,SUB,MUL,DIV};                                       //定义枚举类型
template<class Type>                                                //定义模版类
class Ccalc
{
public:Type Calc(Type &refFirstOpt, Type &refSecOpt, Symbo Opt)     //定义模版类函数
{
           switch (Opt)
           {
           case PLUS:
               return refFirstOpt + refSecOpt;
               break;
           case SUB:
               return refFirstOpt - refSecOpt;
               break;
           case MUL:
               return refFirstOpt*refSecOpt;
               break;
           case DIV:
               return refFirstOpt / refSecOpt;
               break;
           default:
               break;
           }
}
};

在对话框资源中双击“计算”按钮编写其消息处理过程,输入以下代码

void CMFCStudyDlg::OnBnClickedCalc()
{
    CString szFirstOpt, szSecOpt, szSymbo, szResult;
    m_Symbo.GetWindowText(szSymbo);
    if (!szSymbo.IsEmpty())
    {
        m_FirstOpt.GetWindowText(szFirstOpt);
        m_SecOpt.GetWindowText(szSecOpt);


        double dbFirst = _wtoi(szFirstOpt.GetBuffer(0));
        szFirstOpt.ReleaseBuffer(0);
        double dbSec = _wtoi(szSecOpt.GetBuffer(0));
        szSecOpt.ReleaseBuffer(0);

        Symbo opt;
        if (szSymbo=="+")
        {
            opt = PLUS;
        }
        else if (szSymbo=="-")
        {
            opt = SUB;
        }
        else if (szSymbo="*")
        {
            opt = MUL;
        }
        else
        {
            opt = DIV;
        }
        Ccalc<double>CalcObj;                                   //定义类模版对象
        double dbRet = CalcObj.Calc(dbFirst, dbSec, opt);       //调用Calc方法进行计算
        szResult.Format(_T("%-8.2f"), dbRet);                   //将实数转换为字符串
        m_Result.SetWindowText(szResult);                       //在编辑框中显示结果
        szResult.ReleaseBuffer(0);                              //释放缓冲区
    }
    // TODO:  在此添加控件通知处理程序代码
}

其中

double dbFirst = _wtoi(szFirstOpt.GetBuffer(0));
szFirstOpt.ReleaseBuffer(0);
double dbSec = _wtoi(szSecOpt.GetBuffer(0));

是将字符串转换成实数,然后释放缓冲区。
在多字符集中写atof()中即可,但在 Unicode 字符集中则需改为_wtoi()

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

MFC控件关联变量

控件关联变量的方法: 在控件上右键-->添加变量->将类别改成Value(默认是Control) ->选择变量类型->取一个变量名->根据类型会提示相关项可输入 如下图 点击完成(注意这里的...
  • love3s
  • love3s
  • 2012-06-01 10:54
  • 9070

MFC控件关联变量

一.控件变量的分类 控件变量分为值变量和控件类的变量; ①值变量:与控件关联的数据变量,可以为任何MFC基本数据类型,在控件和变量之间有两种数据的传递方式:控件传递给变量(表征为向控件输入...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

Xib文件使用(二)——关联变量

xib文件设计原则 1 始终用延迟加载设计nib文件,只用当nib文件中的这些对象马上就要使用时,才载入nib文件。 2 存储重复的用户界面组件(例如文档窗口)在单独的nib文件。 3 对于偶尔...
  • xunyn
  • xunyn
  • 2013-01-20 19:00
  • 11041

MFC 关联变量 EditControl控件 UpdateData CString与double转换

MFC中edit control取值,经过计算后,在赋值给另一个edit control 第一种方法: double result,a; CString str,str1; //取值 CEd...

[备忘]MFC各种控件使用,线程

CComoboBox: CComboBox *pCombo = (CComboBox *)GetDlgItem(IDC_COMBO_TEST); pCombo->InsertString(0, ...

DDX_Text字符串变量关联 DDX_Control控件关联

声明 void AFXAPI DDX_Text( CDataExchange* pDX, int nIDC, BYTE& value ); void AFXAPI DDX_Text( CDataE...

关于MFC中通过向导添加变量的问题

control型变量可以获得控件的实例,是这个控件所属类的一个实例(对象),可以通过这个变量来对该控件进行一些设置,操纵控件。 value仅仅可以获得该控件的public型变量,只是用来传递数据,不...
  • wjlkc
  • wjlkc
  • 2017-07-14 10:38
  • 84

C++MFC编程笔记day06 MFC向导、MFC绘图类使用

MFC绘图    MFC绘图类包括绘图设备类和绘图对象类    1 绘图设备类      CDC类-父类是CObject,封装的是一般的绘图设备,例如:显示器,      ...

MFC控件使用

对于一般控件,直接声明后调用其Create()方法就可以在视图中创建,如 CStatic m_Static; m_Static.Create("STATIC",WS_CHILD|WS_VISI...

MFC控件使用

转载至http://blog.163.com/copy00@126/blog/static/151149979201042585715350/ (一)List Control控件的使用 新近开发...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)