【教程】10分钟学会用MFC写算法
由于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.在开头和结尾加上关键语句,如下:
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变量
}
3.如果想使用C语言样式的输入输出,那么可以这么写(比较麻烦,不建议使用):
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 += outbuf;
               
    UpdateData(false); // 【必要】在对话框显示Value变量
}

第六步、运行
010.PNG

[修改于 5 年前 - 2015-04-10 18:24:48]

来自 软件综合
 
1
2015-4-10 17:29:26
acmilan(作者)
1楼
MFC对于文本流居然要用到标准库。。。
折叠评论
加载评论中,请稍候...
折叠评论
2楼
没看到和算法有关的内容啊?
折叠评论
加载评论中,请稍候...
折叠评论
acmilan(作者)
3楼
引用 金星凌日:
没看到和算法有关的内容啊?
。。。c=a-b;这里是算法[s:20]我可以在这里放个冒泡排序
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变量
}
这个帖子主要是让大家熟悉一下MFC写程序的步骤,重点不在算法

[修改于 5 年前 - 2015-04-10 21:35:35]

折叠评论
加载评论中,请稍候...
折叠评论
2015-04-13 16:19:23
2015-4-13 16:19:23
4楼
没有了啊  额
折叠评论
加载评论中,请稍候...
折叠评论
5楼
十分钟过去了……






你特么在逗我(╯‵□′)╯︵┻━┻
折叠评论
加载评论中,请稍候...
折叠评论
2015-05-13 22:01:46
2015-5-13 22:01:46
6楼
谢谢楼主先,不过不是很全面
折叠评论
加载评论中,请稍候...
折叠评论
2015-05-19 09:24:40
2015-5-19 09:24:40
7楼
QQ截图20150519092334.jpg

哈哈,我选用齿轮时的小计算器就是这么干的。
折叠评论
加载评论中,请稍候...
折叠评论
8楼
WPF 党 路过...  微软已经抛弃MFC。
折叠评论
加载评论中,请稍候...
折叠评论
acmilan(作者)
9楼
引用 celeron533:
WPF 党 路过...  微软已经抛弃MFC。
微软近期内不可能抛弃MFC,以后也不会。
微软在Visual Studio 2008 SP1中更新过一次MFC,已经足够强大了,以后即使不更新对于一般人也够用了,更新慢点而已。Visual C++其实还可以用WinAPI以及外挂C++和DLL库等方法来补充。微软很多DLL库都是有C++命名空间的,比如GDIPLUS和MSXML。
另外,在2012年以后,MFC的文档也有了中文翻译,可以访问msdn library查看,所以学习起来应该没那么困难了。

[修改于 4 年前 - 2015-05-19 16:30:26]

折叠评论
加载评论中,请稍候...
折叠评论

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

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
ID:{{user.uid}}
{{user.username}}
{{user.info.certsName}}
{{user.description}}
{{format("YYYY/MM/DD", user.toc)}}注册,{{fromNow(user.tlv)}}活动
{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png