利用了SetTimer可是不行,我觉得可能是需要在执行while语句的时候要做一个像VB里面Doevents的操作,将操作交给系统。而在VC里面怎么实现啊。

解决方案 »

  1.   

    a的定义用volatile;
    或者建立一个event,while中等待事件触发,外面计数触发事件
      

  2.   

    while循环里面添加一个消息循环体。
      

  3.   

    用MFC自动自动生成的WM_TIMER事件的响应是void CGeneralInfo::OnTimer(UINT nIDEvent) 
    {
    // TODO: Add your message handler code here and/or call default
    /*这里写你的代码*/

    CDialog::OnTimer(nIDEvent);
    }你可以试试看行不行
      

  4.   

    不需要什么while,应该直接在OnTimer里面处理
    OnTimer()
    {
    a++;
    if(a==30)
    {
    MessageBox("内容");
    break;
    }}
      

  5.   

    同意 WingForce(初六,履霜,坚冰至。)
      

  6.   

    我想楼主是想弄成一个“阻塞模式”的代码
    他的while语句里肯定还有别的代码,要执行其他功能,但为了简便,只写了几个。
    (当然是个人猜测~呵呵,因为我最近就在这方面郁闷呢……我就是想在MFC程序中在EditBox中输入内容的时候,程序暂停,输入完后,程序再继续,就如cin,scanf似的……)
    另外我想问问楼主,你的OnTimer中的变量a,和while中的'a'是一个吗?是不是作用域不同的原因呢?
      

  7.   

    建议运行N千遍,看看是否偶尔有一次,运行结果是你想要的……
    如果是的话,大概得需要V、P原语了……呵呵~
      

  8.   

    楼上有一位说得对,我是想在while里面执行其他语句,就比如VB里面有一个doevents,可以实现把当前执行交给系统,执行其他语句达到然后辨别我的一个变量。VC里面有没有这方面的语句,在while执行一次循环前,先执行其他事件,然后再循环。这样应该就可以读取OnTimer改变了a的値。a是一个公共变量。另外请问:“HITGB(我爱风铃) ”,你所说的方法具体怎么实现,感觉你说的方法与我想实现的应该是相同的。