首页 > 用户发贴区 > 编程问题提问区 > 如何在 VC 中释放控制权?(相当于VB的DoEvents)
2008
08-05

如何在 VC 中释放控制权?(相当于VB的DoEvents)

我的示例工程如下:
窗体上放两个按钮和一个标签:cmdStart , cmdStop 和 lblNumber。按下 cmdStart 后开始计数直至全局变量 m_bIsRunning = false 或超过一定次数,通过按另一个按钮来改变全局变量。在网上搜到用PeekMessage的方法,但是还是不太会用,请问谁能给我点提示?我知道在VB里只需要 DoEvents 就可以了。我又复习了一遍SDK编写一个最简单的窗口程序的过程(在回调函数里处理消息,注册窗口类,其中窗口结构的一项是回调函数的地址,创建窗口,消息循环),还是没想到方法。

void CVCDoEventsDlg::OncmdStart()
{
    CString sCount;
    static MSG msg;

    m_Count = 0;
    m_bIsRunning = true;

/*
while (PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
  if (!AfxGetApp()->PumpMessage())
  {
   PostQuitMessage(0);
  }
}
*/


    while(m_bIsRunning && m_Count <= 1000)
    {
        m_Count++;
        PeekMessage(&msg,NULL,0,0,PM_NOREMOVE);  // 运行结果表明,这一句并不等价于VB的DoEvents
        sCount.Format(_T(“%d”), m_Count);
        m_lblNumber.SetWindowText(sCount);
        m_lblNumber.UpdateWindow();
     }
}

void CVCDoEventsDlg::OncmdStop()
{
    m_bIsRunning = false;
}


留下一个回复