注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

刘邓

每天收获一点点-目标:富足

 
 
 

日志

 
 

MFC入门经典  

2012-04-06 20:54:02|  分类: 技术类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

今天向同学请教了下MFC的入门问题,当真有种听君一席话,胜读十年书的感觉。我个人以为每个学习C++控制台类型编程的新手都希望能够把小黑窗变为交互简单的窗口程序,这就促使我们学习MFC

之前学习MFC最大的愿望就是可以吧之前写的Win32控制台程序轻松的转化到MFC界面程序上来,要实现这一点需要完成以下功能:

1.实现MFC控件(暂时为Edit控件)与数据的绑定,变量值可以在界面和后台之间传递

2.实现MFC事件响应和函数的绑定。

本文的主要目的不是教你如何使用VS“编写”MFC程序,而在于把我们之前养成的书写控制台习惯的代码合理的转化为MFC代码(前提是你的代码完全符合C++面向对象的标准)

首先明确一点MFC是纯C++面向对象风格的类库,故我们要写的后台程序必须全部要以类和类成员函数来实现<-这点非常重要。

下面就一个简单的加法界面程序作为加入MFC世界的敲门砖:

在正常的WIn32控制台程序中,我们如果编写一个面向对象风格的加法类代码如下:


class CAdd
{
public
 int a,b,c;
  CAdd();
 void add();
}
CAdd::CAdd()
{
   a = 0;
  b = 0
   c = 0;
}
void CAdd::add()
{
    c = a+b;
}

如果我们再加入main()函数然后传递点参数啥的,它就可以在黑框框里和用户交互了。但这不是我们想要的!!!

下面我们把上面的程序变成MFC对话框程序.

1.创建基于对话框的MFC项目

2.将下面代码加入到XXDlg.h

class CAdd
{
public
 int a,b,c;
  CAdd();
 void add();
};

3.把下面代码加入到XXDlg.cpp

CAdd::CAdd()
{
   a = 0;
  b = 0
   c = 0;
}
void CAdd::add()
{
    c = a+b;
}
4.现在代码是加进来了,下面要做的就是变量和文本输入框的绑定了,首先将向导创建的资源对话框改为下面的样子:

MFC入门经典 - 刘邓 - 刘邓
 

在属性栏中将三个示例编辑框的ID改为IDC_A,IDC_B,IDC_C(这么做完全是为了方便,也可以使用默认ID)

5.下面一步是关键:变量a,b,c关联到三个示例编辑框中,这么做以后变量和编辑框之间就可以进行数据传递了。

别忘了在XXDlg类中创建一个CAdd的对象实例

public:

CAdd Add;

然后找到XXDlg类中的

void CADDDlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

}函数,在里面添加代码为—>

void CADDDlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

DDX_Text(pDX, IDC_A,Add.a); 

DDX_Text(pDX, IDC_B,Add.b); 

DDX_Text(pDX, IDC_C,Add.c); 

}

下面三个语句就实现了文本编辑框A,B,C和变量a,b,c之间的绑定。

6.下面一步是将button的响应函数设置为我们的add()函数,具体代码如下:

void CADDDlg::OnBnClickedButton1()

{

UpdateData(true);

Add.add();

UpdateData(false);

}

其中UpdateData()函数起到传递刷新数据的作用。

7.编译运行就可以得到下图的界面,单击button就可以实现加法

MFC入门经典 - 刘邓 - 刘邓
 






  评论这张
 
阅读(3728)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018