向你这样的特殊需要,还是另外设计输入界面的好,用Edit很难控制;当然,仅就Edit本身的应用来说,就是GetWindowText/SetWindowText,中间处理一下字符串就可以了。

解决方案 »

  1.   

    原本是控制台程序的代码,怎么转为MFC(exe)的代码,例如以下是一个迷宫问题的代码:
    #include <iostream>
    #include <fstream>
    #include <conio.h>
    using namespace std;struct step                       //定义一个栈
    {
    int x,y,n;          //x,y表示步子坐标,n表示步数
    };void change(char **maze,int hang,int lie) //改变以下迷宫的样子,就为了好看点
    {
    for(int i=0;i<hang+2;i++)
    {
    for(int j=0;j<lie+2;j++)
    switch(maze[i][j])
    {
    case '1':  maze[i][j]='#';break;
    case '+':  maze[i][j]='+';break;
    case '0':  maze[i][j]='0';break;
    case '.':  maze[i][j]=' ';break;
    }
    }
    }void step_to_step(char **maze,step *Step,int hang,int lie,int n)
    {                           //单步输出
    for(int k=0;k<=n;k++)
    {
    for(int i=0;i<hang+2;i++)
    {
    for(int j=0;j<lie+2;j++)
    {
    if(Step[k].x==i&&Step[k].y==j)//????????????????????????
    cout<<"."<<" ";
    else cout<<maze[i][j]<<" ";
    }
    cout<<endl;
    }
    cout<<"这是第"<<k+1<<"步"<<endl<<endl;
    getch();
    }
    }void out(char **maze,int hang,int lie,int i,int j)            //输出所走的路程
    {                                 
    if(i==1&&j==1)                 //若回到原点则表明无出路
    {
    cout<<endl;
    cout<<"************************************************************"<<endl;
    cout<<"|-------------此迷宫没有出路,所走路线如下图---------------|"<<endl;
    cout<<"************************************************************"<<endl;
    }
    else                              //否则有出路
    {
    cout<<endl;
    cout<<"************************************************************"<<endl;
    cout<<"|----------------找到迷宫出路,如图所示--------------------|"<<endl;
    cout<<"************************************************************"<<endl;
    }
    for(i=0;i<hang+2;i++)                 //输出步子
    {  
    for(j=0;j<lie+2;j++)
    cout<<maze[i][j]<<" ";
    cout<<endl;
    }
    }void cure(char **maze,int hang,int lie)
    {
    int i=1,j=0,n=-1;
    char Q;
    step *Step;                             //定义一个存储路程的栈
    Step=new step [hang*lie];               //事先给其分配一定的空间,[hang*lie]表示空间足够
    if(maze[1][1]=='1')
    {
    cout<<"555..我进不去!!!"<<endl<<endl;
    getch();
    exit(0);
    }

    else while(maze[hang][lie]!='.')            //由右、下、左、上的顺序判断是否走通
    {             //'1'表示走不通,'+'表示已经走过但不通又回来的步子,'.'表示已经走过并通了的步子
    if(maze[i][j+1]!='1'&&maze[i][j+1]!='.'&&maze[i][j+1]!='+')
    {
    if(i==1&&j==0)
    {
    cout<<"入口"<<endl;
    }
    else
    cout<<"右"<<endl;
    maze[i][j+1]='.';
    j=j+1;
    n++;
    Step[n].x=i;
    Step[n].y=j;
    cout<<i<<","<<j;
    } else if(maze[i+1][j]!='1'&&maze[i+1][j]!='.'&&maze[i+1][j]!='+')
    {
    cout<<"下"<<endl;
    maze[i+1][j]='.';
    i=i+1;
    n++;
    Step[n].x=i;
    Step[n].y=j;
    cout<<i<<","<<j;
    }

    else if(maze[i][j-1]!='1'&&maze[i][j-1]!='.'&&maze[i][j-1]!='+')
    {
    cout<<"左"<<endl;
    maze[i][j-1]='.';
    j=j-1;
    n++;
    Step[n].x=i;
    Step[n].y=j;
    cout<<i<<","<<j;
    }

    else if(maze[i-1][j]!='1'&&maze[i-1][j]!='.'&&maze[i-1][j]!='+')
    {
    cout<<"上"<<endl;
    maze[i-1][j]='.';
    i=i-1;
    n++;
    Step[n].x=i;
    Step[n].y=j;
    cout<<i<<","<<j;
    } else                                  //若走不通则返回上一步
    {
    if(i==1&&j==1)                     //当回到入口时,说明无通路,结束循环
    break;
    else
    {
    maze[i][j]='+';                       //将走不通的点置为+
    n--;
    i=Step[n].x;                           //返回上一个点
    j=Step[n].y;  
    cout<<"返回"<<endl<<i<<","<<j;           //输出返回信息
    }                             
    }
    if(i==hang&&j==lie)
    cout<<"(出口)"<<"  "<<"(共"<<n+1<<"步"<<")";
    }

    out(maze,hang,lie,i,j);
    cout<<endl<<endl<<endl;
    cout<<"是否单步输出(y/n):";
    cin>>Q;
    cout<<endl<<endl;
    if(Q=='y')
    {
    change(maze,hang,lie);
    step_to_step(maze,Step,hang,lie,n);
    }
    }int main()
    {
    char **maze;                         //定义一个迷宫,空间可动态
    int hang,lie,i,j;
    char Q;
    cout<<"希望手动输入还是文件读入(s:手动输入,w:文件读入):";
    cin>>Q;
    cout<<endl<<endl;
    if(Q=='s')
    {
    cout<<"请输入矩阵的行列"<<endl;
    cout<<"行数:";
    cin>>hang;
    cout<<"列数:";
    cin>>lie;
    cout<<endl;
    maze=new char *[hang+2];                       //分配连续空间给迷宫
    for(i=0;i<hang+2;i++)
    maze[i]=new char [lie+2];

    cout<<"请输入迷宫,0表示通路,1表示墙"<<endl;  
    for(i=1;i<=hang;i++)
    for(j=1;j<=lie;j++)
    cin>>maze[i][j];                      
    }
    else if(Q=='w')
    {
    ifstream infile("C:\\kadinu.txt",ios::in);        //可用文件外部输入
    infile>>hang;
    infile>>lie;

    maze=new char *[hang+2];                       //分配连续空间给迷宫
    for(i=0;i<hang+2;i++)
    maze[i]=new char [lie+2];

    for(i=1;i<=hang;i++)
    for(j=1;j<=lie;j++)
    infile>>maze[i][j];

    cout<<"文件读取成功!"<<endl;
    }

    for(i=0;i<hang+2;i++) maze[i][0]='1';
    for(i=0;i<lie+2;i++) maze[0][i]='1';
    for(i=0;i<lie+2;i++) maze[hang+1][i]='1';
    for(i=0;i<hang+2;i++) maze[i][lie+1]='1';
        cout<<endl<<endl;

    cout<<"********************您输入的迷宫为******************************"<<endl;
    cout<<"行数:"<<hang<<"  "<<"列数:"<<lie;
        cout<<"   "<<"入口:"<<"1,1"<<"  "<<"出口:"<<hang<<","<<lie<<endl;
    for(i=0;i<hang+2;i++)
    {
    for(j=0;j<lie+2;j++)
    cout<<maze[i][j]<<" ";
    cout<<endl;
    }
    cout<<endl<<endl<<"所走的步骤如下:"<<endl;

    cure(maze,hang,lie);

    cout<<endl<<endl;
    getch();

    return 0;
    }
    怎么转为MFC(exe)里的代码,
    并且有输入0-1矩阵,和输出迷宫的界面 
      

  2.   

    MFC只是提供了Windows程序所需的界面、资源、消息响应等类库而已,写程序核心的算法部分跟控制台程序来说没啥区别,你把上面代码输入输出改改不就行了。想用Editbox实现你的输入输出也是可以的,把你的矩阵存到字符串里面,比如:
    CString str_in;
    m_edit_in.GetWindowText(str_in);
    CString str_out = str_in;
    str_out.Replace('1','*');
    m_edit_out.SetWindowText(str_out);这段代码放到button响应函数里就行了
      

  3.   

    用MFC做迷宫问题,该怎么入手呀!
    我找不到任何一点思路,那位高手指点指点l.....