比如程序执行到某一步,要等待用户按下回车键,然后才继续执行,该怎么办呢?谢谢!

解决方案 »

  1.   

    想法有问题,Windows程序是消息驱动的,也就是说给一个消息,程序在得到这个消息后给出相应的处理应答,不应该出现你上面的情况
      

  2.   


    CreateMutex....WaitForSingleObject再在指定的消息proc中ReleaseMutex
      

  3.   

    楼主不用考虑程序的其他处理???如果只是想实现简单的用户互动,那可以在你执行到指定位置,设个循环检测用户是否输入回车,是再跳出循环哈哈
    记得在循环里要加上Sleep(1)
      

  4.   

    红猪:我理解你说的,我的意思是说怎样造成这样的效果,比如我在一个文本框中显示问题,在另一个文本框获得用户输入。我显示一个问题之后,要等待用户的输入,然后再显示下一个问题,那么怎样做到呢?knift:我看不懂你说的呀……能不能告诉我那里有关于这方面(互斥体???)的资料?我去学学树头:你的想法很有趣,能不能详细说一下如何判断用户是否按下了回车键?
      

  5.   

    利用线程之间的同步,我转别人的有一篇,还不错,你可以看看:http://blog.csdn.net/yinmingli/archive/2007/08/16/1746423.aspx
      

  6.   

    我想知道怎样判断用户按下了Enter键?
      

  7.   

    我想获得跟dos下的命令行类似的效果,比如:
     
    cout<<"Please enter a:";
    cin>>a;
    cout<<"Please enter b:";
    cin>>b;那么怎样令程序在用户输入a之后才执行cout<<"Please enter b:";这句呢?我的问题就是这个
      

  8.   

    如果是consol那就不用说了,如果是mfc那就onkeydown不就行了!
      

  9.   

    晕 LZ把问题说清楚点吧.
      你现在是什么程序,你想实现什么效果,
     不然这帖子大部分时间都浪费在了理解你的意思之上了...
     问题应该很简单...
        if(GetKeyState(VK_RETURN)&0x80)表示是否按下回车...
    键盘码网上一堆...
      

  10.   

    我是楼主我显然不是在编控制台程序,我那些cin,cout的代码是说我想模拟这样的效果。我是用VS 2005,用MFC在做一个基于对话框的程序,有两个文本框,一个负责输出文字,一个用于用户输入文字。用户输入完文字之后,程序要接受用户输入的内容并处理,完了之后才能接着显示下一步的内容。因为在控制台的环境下,你用cin,程序自动就会停下来等待用户输入,但是用MFC做的时候是Windows下的编程,我刚学不久,所以不知道怎样去实现这样的效果,能不能指点我一下?
      

  11.   

    Windows程序是消息驱动的,跟控制台那是不一样的,功能原样照搬不现实。
    刚转过来是会有些发懵,建议楼主先去找些书来看一下。
      

  12.   

    其实我的问题就是如何令程序的语句执行到某个地方的时候停住,等待用户输入数据后再接着运行,但这个“停住”不是程序卡死了,而是说那个输出信息的文本控件暂时不输出信息,等用户输入了数据之后,再输出信息。很简单不是吗?我知道在windows下这不是很自然能做到的,但一定是有办法的不是吗?可是该怎么做呢?
      

  13.   

    那么你可以响应WM_CHAR消息或者是EDIT控件的EN_CHANGE,
    判断收到回车字符之后,调用GetWindowText或者是UpdateData,就可以收到你想要的数据。
      

  14.   

    还不是想法问题,一般情况下Windows程序根本就不会出现你所说的停住,你的程序是输入文本框输入完成之后,经过处理再由输出对话框输出是吧,这可以用下面几种方法来处理,第一:加一个按钮,在按钮中触发,第二:可以对Edit子类化,处理Enter键
      

  15.   

    楼主,我建议你加个按钮进行用户输入完成的处理吧,简单又有效
    下面给你个简单的示例:
    CString sEditText;
    GetDlgItem(IDC_EDIT1)->GetWindowText(sEditText);    
    GetDlgItem(IDC_SHOWSTATIC)->SetWindowText(sEditText);
    //假设你的编辑框ID为IDC_EDIT1,文本框ID为IDC_SHOWSTATIC(默认的文本框ID都为IDC_STATIC,记得要修改)
      

  16.   

    1:把你的编辑框设置为Multiline和WantReturn(在资源编辑器里设置)
    2:重载对话框PreTranslateMessage虚函数
    CMyDiaolog::PreTranslateMessage( MSG* pMsg )
    {
        if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN && pMsg->hwnd= 你的编辑框.m_hWnd )
    {
                   swtich( pMsg->wParam )
                    {
                          case VK_RETURN://回车
                           {
                               ....
                               break;
                            }
                           case 'A':
                            {
                               ....
                               break;
                            }
                     }
      }
    }
      

  17.   

    看看孙鑫的视频

    《MFC Windows程序设计》
      

  18.   

    emptyness说的是对的啊······
      

  19.   

    信号量是关键.名词太多,linux有system v, 有ipc 有 semephome有signal,其实万变不离其中.你的MFC也一样
      

  20.   

    搂主可以这样做:对“确定“按钮添加单击事件,写:
               UpdateData(true);
               edit2=edit1;
               UpdateData(false);
        然后,将“确定”按钮删除,此时,可实现按下enter后将输入框(edit1)的内容显示在输出框(edit2)上
     
        注:这个方法很投机,我也是初用vs 2005,不是很了解其机制。搂主要学MFC的话,建议先了解其基本运行机制,尤其是消息,会很有帮助的。