文号
t70825
阅读
29823
回复
9
收藏
10
所有教程由网友发布,仅供参考,请谨慎采纳。科创不对教程的科学性、准确性、可靠性负责。
【教程】10分钟学会用MFC写算法
2015/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.在开头和结尾加上关键语句,如下:
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     updatedata(false); 【必要】在对话框显示value变量 }< code></2;>

第六步、运行
010.png
[ 修改于11年8个月前 - 2015/04/10 18:24:48 ]
acmilan作者
11年8个月前IP:四川
761845
1楼
MFC对于文本流居然要用到标准库。。。
引用
评论
11年8个月前IP:陕西
761846
2楼
没看到和算法有关的内容啊?
引用
评论
acmilan作者
11年8个月前修改于 11年8个月前IP:四川
761848
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变量 }< code></10;></i;></10;>
这个帖子主要是让大家熟悉一下MFC写程序的步骤,重点不在算法
引用
评论
11年8个月前IP:山东
762517
4楼
没有了啊  额
引用
评论
11年8个月前IP:山东
762518
5楼
十分钟过去了……
。
。
。
。
。
。
你特么在逗我(╯‵□′)╯︵┻━┻
引用
评论
11年7个月前IP:江西
768433
6楼
谢谢楼主先,不过不是很全面
引用
评论
11年7个月前IP:山东
769361
7楼
QQ截图20150519092334.jpg
哈哈,我选用齿轮时的小计算器就是这么干的。
引用
评论
11年7个月前IP:上海
769374
8楼
WPF 党 路过...  微软已经抛弃MFC。
引用
评论
acmilan作者
11年7个月前修改于 11年7个月前IP:四川
769402
9楼
引用 celeron533:
WPF 党 路过...  微软已经抛弃MFC。
微软近期内不可能抛弃MFC,以后也不会。
微软在Visual Studio 2008 SP1中更新过一次MFC,已经足够强大了,以后即使不更新对于一般人也够用了,更新慢点而已。Visual C++其实还可以用WinAPI以及外挂C++和DLL库等方法来补充。微软很多DLL库都是有C++命名空间的,比如GDIPLUS和MSXML。
另外,在2012年以后,MFC的文档也有了中文翻译,可以访问msdn library查看,所以学习起来应该没那么困难了。
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的