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类向导的“对象ID”列表里没有手动创建的控件的ID

----------------------------------------------------------------------------------------------------...

MFC中属性表单,向导,Tab控件演示实例

刚刚学习MFC编程不久,指导师兄交代了几个小任务,现将自己的工作再梳理一面,以加深印象! 达到的目的是这样的,在第一个和第二个页面各输入一个值,再把这两个值求和的结果输入到第三个页面中来。共用三种方法...
  • dby3579
  • dby3579
  • 2015年03月09日 15:25
  • 679

树形控件TreeCtrl关联的MFC中的类:CTreeCtrl

1、插入结点:InsertItem 2、获取与设置结点的文本:GetItemText、SetItemText 3、删除某个结点:DeleteItem 4、删除所有结点:DeleteAllItem...

MFC中一些控件的使用和Opencv的一些变量转换

这几天需要做一个小的demo,用到了MFC,其实本来想用.net,听说更方便,但谁让我对mfc熟悉呢,懒也没办法。 下面是昨天遇到的一些问题: Opencv中IplImage与Mat的转换 ...

VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)

转自:http://www.jizhuomi.com/software/153.html 前两讲中鸡啄米为大家讲解了如何创建对话框资源。创建好对话框资源后要做的就是生成对话框类了。鸡啄米再声明下...

VS2010/MFC编程入门之七(对话框:创建对话框类和添加控件变量)

前两讲中鸡啄米为大家讲解了如何创建对话框资源。创建好对话框资源后要做的就是生成对话框类了。鸡啄米再声明下,生成对话框类主要包括新建对话框类、添加控件变量和控件的消息处理函数等。        因...

MFC学习笔记——CDialog(创建对话框类和添加控件变量)

转自 http://www.jizhuomi.com/school/c/157.html用过VC++6.0的可能记得,我们定义的对话框类都是从CDialog类派生的,但在VS2010中,一般对话框类都...

VS2005与IE8导致MFC类向导出现脚本错误无法正常使用的解决办法

VS2005与IE8导致MFC类向导出现脚本错误无法正常使用的解决办法 最近突然出现这种错误,一开始只是自动添加变量出错,手工修改还能用,昨天要开始增加Dialog,发现没有向导很悲剧,...
  • wuqunce
  • wuqunce
  • 2013年04月20日 15:05
  • 785

VS2010使用MFC类向导时提示“灾难性故障”的解决

文章原创,转载请注明出处             这两天想给自己的一个VS2010工程项目通过MFC类向导添加一些控件变量,却发现提示一个错误对话框吓我说“灾难性错误”然后VS2010就崩溃了,要...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC 使用类向导为控件关联变量
举报原因:
原因补充:

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