OnIdle()
{
    MSG msg ;
    while(!PeekMessage(&msg,0,0,0,0))
     {
            }}
为什么peekMessage() 的值总是不变呢 ?

解决方案 »

  1.   

    不可能总为0,否则while不是死循环了,除非里面有break语句,
    其实也就是空闲时(没有消息)执行一些简单的动作,一有消息就退出
      

  2.   

    我TRACE了下,!PeekMessage(&msg,0,0,0,0) 都是1,是不是哪里出错了呢 ?
      

  3.   

    我的程序最小化的时候,为什么OnIdle()函数不运行呢 ?
      

  4.   

    C#中
    public void OnApplicationIdle(object sender, EventArgs e)
    {     NativeMethods.Message msg ;
         while (!NativeMethods.PeekMessage(out msg, IntPtr.Zero, 0, 0, 0))
         {     }
    }//上面的函数在窗口最小化时仍旧运行,在VC 中
    BOOL CFlyUAVApp::OnIdle(LONG lCount)
    {
        MSG msg;
        while(PeekMessage(&msg,NULL,0,0,0))//
          {
          }}
    问题:
    1 C#中Application.Idle在窗口最小化时仍旧运行,而VC的onidle()就不运行
    2 VC中的while()为死循环
    请高手回答下,谢谢