解决方案 »

  1.   

    1.你自己说的很明白,如果不采取多线程是不能同时跑的
    2.先后运行也未尝不可啊;因为程序运行一个语句非常之快 即便是先后 你也发现不了的啊!
    3.如果同时进行的话,其实还有一种方法,这种方法就是 A还没有跑完,去跑 B;B跑完了再回到A中;就是 在你的循环中 加一个wait消息 ::peekmsg 处理消息;
    代码如下 希望对你有用处~~
    for(;;)

     
      wait(100);// 这种方法可以解决异步变成同步,编程中经常用到}
    void Wait()
    {
    MSG  msg;
    if( ::PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
    {
    ::GetMessage(&msg, NULL, 0, 0 );
    ::TranslateMessage(&msg);
    ::DispatchMessage(&msg);
    }
    }
    void Wait(LONG ms)
    {
    DWORD lT_old = GetTickCount();
    DWORD lT = lT_old;
    do
    {
    Wait();
    lT = GetTickCount();
    } while(lT - lT_old < (DWORD)ms);
    }
      

  2.   

    如果 在你 摁了 按钮A, 按钮 A的事件函数 中 加入wait(1000);你如果按 按钮B 这时会处理B中的消息 ;你可以试试
      

  3.   


    这类问题在台湾侯捷的著作《深入浅出MFC》中已经有所介绍。
    由于你的第一个按钮按下后运行的是一个循环语句,所以你可以在这循环语句中添加PeekMessage()、TranslateMessage()、DispatchMessage()等消息处理函数。
      

  4.   

    这类问题在台湾侯捷的著作《深入浅出MFC》中已经有所介绍。
    由于你的第一个按钮按下后运行的是一个循环语句,所以你可以在这循环语句中添加PeekMessage()、TranslateMessage()、DispatchMessage()等消息处理函数。
      

  5.   

    如果你要用这个方法 最好用一个 循环控制等待消息 在你的循环里加入这个 wait时间不要太长具体代码自己写
      

  6.   

    我也出现了你的问题,上网搜了下,可以用
    while (TRUE)         
    {          
        if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))          
        {          
                if (msg.message == WM_QUIT)          
                       break ;          
                TranslateMessage (&msg) ;          
                DispatchMessage (&msg) ;          
        }          
        else          
        {          
                // 完成某些工作的其它行程序          
        }         
    }