所有教程由网友发布,仅供参考,请谨慎采纳。科创不对教程的科学性、准确性、可靠性负责。
【教程】10分钟学会用MFC写算法
acmilan2015/04/10软件综合 IP:四川
由于Visual C++ 6.0早已过时,在Win7中也无法很好的运行,因此我以Visual Studio 2005作为写程序的环境,大家也可以使用更高版本的,如2008 2010 2012 2013等作为编程环境,都可以与Win7很好地兼容,操作步骤也相似。

第一步、新建一个MFC工程
001.png

这里直接点下一步
002.png

调整设置:基于对话框的程序去勾Unicode库(不然比较麻烦),单击【完成】
003.png

第二步、编辑对话框资源
添加两个Edit Control(Multiline属性设置为True),至少1个Button,想写几个程序就可以添加几个Button
004.png

第三步、给两个文本框添加变量
方法是右键,添加变量
005.png

给上边的文本框添加Value类别,CString类型的变量m_input(作为输入框)
006.png

给下边的文本框添加Value类别,CString类型的变量m_output(作为输出框)
007.png

第四步、添加按钮单击事件
方法很简单,双击任意一个控件
008.png

第五步、写代码
注意事项:
1.在stdafx.h里加上#include <sstream>
2.在开头和结尾加上关键语句,如下:
<code class="lang-cpp">void CMfcAlgo3Dlg::OnBnClickedButton2()
{
    // TODO: 在此添加控件通知处理程序代码
    UpdateData(true); // 【必要】从对话框更新Value变量
    std::stringstream scin(m_input.GetBuffer()); // 建立输入流
    std::stringstream scout; // 建立输出流
               
    // 算法代码
    int a, b, c;
    scin >> a >> b;
    c = a - b;
    scout << c << "\r\n";
               
    m_output += scout.str().c_str(); // 应用输出流
    UpdateData(false); // 【必要】在对话框显示Value变量
}</code>
3.如果想使用C语言样式的输入输出,那么可以这么写(比较麻烦,不建议使用):
<code class="lang-cpp">void CMfcAlgo3Dlg::OnBnClickedButton1()
{
    UpdateData(true); // 【必要】从对话框更新Value变量
    CString scanstr, outbuf;
    int a, b, c;
               
    // C样式输入
    // 只能一次性读取
    sscanf(m_input, "%d %d", &a, &b);
    // 或者
    scanstr = "";
    for (int k=0; k<2; k++) scanstr +="%d " ;     sscanf(m_input, scanstr, &a, &b);                    c="a" - b;      c样式输出     outbuf.format("%d\r\n", c);     m_output     updatedata(false); 【必要】在对话框显示value变量 }< code></2;></code>

第六步、运行
010.png

[修改于 9年9个月前 - 2015/04/10 18:24:48]

来自:计算机科学 / 软件综合严肃内容:教程/课程
9
 
1
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
acmilan 作者
9年9个月前 IP:四川
761845
MFC对于文本流居然要用到标准库。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
acmilan作者
9年9个月前 修改于 9年9个月前 IP:四川
761848
引用 金星凌日:
没看到和算法有关的内容啊?
。。。c=a-b;这里是算法[s:20]我可以在这里放个冒泡排序
<code class="lang-cpp">void CMfcAlgo3Dlg::OnBnClickedButton2()
{
    // TODO: 在此添加控件通知处理程序代码
    UpdateData(true); // 【必要】从对话框更新Value变量
    std::stringstream scin(m_input.GetBuffer()); // 建立输入流
    std::stringstream scout; // 建立输出流
             
    // 算法代码
    int a[10];
    for (int i=0; i<10; i++)         scin>> a;
      
    for (int i=9; i>0; i--)
        for (int j=0; j<i; j++)             if (a[j]> a[j+1])
            {
                int temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
      
    for (int i=0; i<10; i++)     {         scout << a " ";     }     scout "\r\n";                  m_output +="scout.str().c_str();" 应用输出流     updatedata(false); 【必要】在对话框显示value变量 }< code></10;></i;></10;></code>
这个帖子主要是让大家熟悉一下MFC写程序的步骤,重点不在算法
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
acmilan作者
9年7个月前 修改于 9年7个月前 IP:四川
769402
引用 celeron533:
WPF 党 路过...  微软已经抛弃MFC。
微软近期内不可能抛弃MFC,以后也不会。
微软在Visual Studio 2008 SP1中更新过一次MFC,已经足够强大了,以后即使不更新对于一般人也够用了,更新慢点而已。Visual C++其实还可以用WinAPI以及外挂C++和DLL库等方法来补充。微软很多DLL库都是有C++命名空间的,比如GDIPLUS和MSXML。
另外,在2012年以后,MFC的文档也有了中文翻译,可以访问msdn library查看,所以学习起来应该没那么困难了。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
acmilan
进士 学者 笔友
文章
461
回复
2934
学术分
4
2009/05/30注册,5年10个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}