如何在MFC中把程序的运行结果输出到界面上

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在MFC中把程序的运行结果输出到界面上相关的知识,希望对你有一定的参考价值。

题目是输入了四个数 然后要输出 所有等于二十四的式子 老师说在MFC不能用PRINTF
该肿么办肿么办嗷。。。。看了其他的解答 有的说要把运行结果放文件里在直接读文件 但我也不会做 这是我的代码 num1 num2 num3 num4 是 输入的值 要交作业 求解脱
void CTest6DLG::OnOK()

// TODO: Add extra validation here
this->UpdateData(true);

int i,j,k,l,n,m,r,save[4];
double num[4]=1,1,1,1,tem1,tem2,tem3,abc=1111;
char sign[5]="+-*/";

// printf("input 4 numbers:");
num[0] = m_num1;
num[1] = m_num2;
num[2] = m_num3;
num[3] = m_num4;
for(i=0;i<4;i++)

//scanf("%lf",num+i); save[i]=num[i];

for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(j!=i)

for(k=0;k<4;k++)
if(k!=i&&k!=j)

for(l=0;l<4;l++)
if(l!=i&&l!=j&&l!=k)

for(n=0;n<4;n++)
for(m=0;m<4;m++)
for(r=0;r<4;r++)

tem1=fun(num[i],num[j],n);
tem2=fun(tem1,num[k],m);
tem3=fun(tem2,num[l],r);
if(tem3==24.0)
printf("(%d%c%d)%c%d%c%d=24\n",save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);
else
if(tem3==-24.0)
printf("%d%c(%d%c%d)%c%d=24\n",save[k],sign[m],save[i],sign[n],save[j],sign[r],save[l]);
else
if(tem3==1.0/24.0)
printf("%d%c(%d%c%d)%c%d=24\n",save[l],sign[r],save[i],sign[n],save[j],sign[m],save[k]);
else
if(tem3==-1.0/24.0)
printf("%d%c%d%c(%d%c%d)=24\n",save[l],sign[r],save[k],sign[n],save[i],sign[m],save[j]);
else

tem1=fun(num[i],num[j],n);
tem2=fun(num[k],num[l],r);
tem3=fun(tem1,tem2,m);
if(tem3==24.0)
printf("(%d%c%d)%c(%d%c%d)=24\n",save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);







// CDialog::OnOK();

void CTest6DLG::OnChangenum1()

// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.

// TODO: Add your control notification handler code here

在界面上定义一个EditBox(CEdit类)或者StaticText(CStatic类)控件,使用该类的SetWindowText成员函数把文本写到控件中显示。

控制台终端的输出流的话,可以用strstream 或stringstream 代替iostream 作为流,流输出完成后,生成的字符串都在流缓冲中,程序可以直接把流缓冲的内容写到控件中。

注意,老的编译器可能不支持 stringstream,就只有使用 strstream 了,用法可以到网上搜索,例子很多。
参考技术A printf("(%d%c%d)%c(%d%c%d)=24\n",save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);
这句,替换成下面的代码吧,其实对话框再放一个CEditBox最方便,但。。说起来麻烦,呵呵。
CString str;
str.Format("(%d%c%d)%c(%d%c%d)=24\n",save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);
如果都显示,就将几次的str加+起来
最后
AfxMessageBox(str);追问

请问 str.Format 是什么啊 万分感谢

追答

CString str;//定义一个字符串
str.Format();//通过格式化的方式给字符串str赋值
AfxMessageBox(str);//将字符串str通过消息框的方式显示出来

你先替换一个试试吧,看来你编程实在不是很熟,不要着急,慢慢来。

追问

能不能加q问啊 我保证不会很罗嗦1025674623

追答

百度hi在线

本回答被提问者采纳

java 如何在图形界面显示程序运行结果

想要在java图形界面上显示出java程序的运行结果,要怎么弄啊?!

如果只是一些文本要显示,可以在上面加个JTextArea,JTextField之类的组件,用这些组件的对象调用setText("           ")方法(括号里是字符串)来显示文本

比如:

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.HashMap;

import java.util.Map;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

/** 文本区域

 * 

 * @author Administrator

 *

 */

public class TextArea extends JFrame 

 

 private static final long serialVersionUID = 2306597749734227012L;

 

 private JButton b1 = new JButton("Add Data"), b2 = new JButton("Clear Data");

 

 private JTextArea text = new JTextArea(20, 40);

 private Map<String, String> map =

  new HashMap<String, String>();

 

 public TextArea() 

  // Use up all the data:

  map.put("a", "1");

  map.put("b", "2");

  b1.addActionListener(new ActionListener() 

   @Override

   public void actionPerformed(ActionEvent e) 

    // TODO Auto-generated method stub

    for(@SuppressWarnings("rawtypes") Map.Entry me : map.entrySet())

     text.append(me.getKey()+": "+me.getValue()+"\\n");

    

    

   

   

  );

  

  b2.addActionListener(new ActionListener() 

   @Override

   public void actionPerformed(ActionEvent e) 

    // TODO Auto-generated method stub

    text.setText("");

   

   

  );

  

  setLayout(new FlowLayout());

  add(new JScrollPane(text));

  add(b1);

  add(b2);

  

 

 /**

  * @param args

  */

 public static void main(String[] args) 

  // TODO Auto-generated method stub

  GUItools.SwingConsole.run(new TextArea(), 475, 475);

 

JTextField和这差不多,只不过是显示单行的。

如果要显示其他字体的,可以用HTML格式,如下:

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

/** Swing 组件上的HTML

 * 

 * @author Administrator

 *

 */

@SuppressWarnings("serial")

public class HTMLButton extends JFrame 

 private JButton b = new JButton(

   "<html><b><font size=+2>"+

   "<center>Hello!<br><i>Press me now!");

    // 必须使文本以 "<html>" 标记开始。

 public HTMLButton() 

  // TODO Auto-generated constructor stub

  b.addActionListener(new ActionListener() 

   @Override

   public void actionPerformed(ActionEvent e) 

    // TODO Auto-generated method stub

    add(new JLabel("<html>"+"<i><font size=+4>Kapow!"));

    

    // Force a re-layout to include the new label:

    validate();

   

  );

  setLayout(new FlowLayout());

  add(b);

 

 /**

  * @param args

  */

 public static void main(String[] args) 

  // TODO Auto-generated method stub

  GUItools.SwingConsole.run(new HTMLButton(), 200, 500);

 

参考技术A 利用Graphics中的drawSting()函数,该函数可以将一个字符串打印到指定的位置,详细功能参见java api(一个帮助文档,网上可以下到),亦可以在图形界面中添加一个组件TextArea,利用其setText或append函数向其中添加字符型!无论java的运行结果是字符或数字,都可以,但数字要先变为字符串,java中有这个函数! 参考技术B 将结果存在一个字符串中,然后在界面中用一个label显示就可以了! 参考技术C Java私塾——《深入浅出学Java开发初级》系列精品教程

学习Java开发初级部分的知识
第一章:Java入门
第二章:Java基础语法
第三张:Java类和对象
第四章:Java高级类特性
第五章:数组和枚举
第六章:常见累的使用
第七章:抽象类和接口
第八章:异常和断言
下载地址:csdn上可以搜的到
正值他们4周年之际,学费9折
参考技术D 你查看一下api吧。很多方法的。例如lable的setTest 方法

以上是关于如何在MFC中把程序的运行结果输出到界面上的主要内容,如果未能解决你的问题,请参考以下文章

mfc 动态更新编辑框内容

如何获得CreateProcess启动的进程返回的结果

linux下C语言编程如何判断一个程序是不是运行成功 (结果是一个界面) ?

MFC中如何修改图标

在mfc中如何判断输入的是不是为汉字?

Qt图形界面程序如何调用fortran编写的控制台程序?