我希望对话框在启动显示以后,自动完成一定得功能,
我在OnInitDialog中post一个自定义得消息,
但是发现该消息得响应函数执行以后,才显示对话框.
我希望在对话框显示以后,再执行我要完成得功能,
请问该如何处理.2 对于wm_paint消息,系统得处理是不是有特殊得地方.
msdn中说The system sends this message when there are no other messages in the application's message queue. 是不是如果消息队列中还有其它得消息,系统就
不发送此消息了,如果我希望时序得处理如下消息:消息A,wm_paint,消息B,
又该如何来实现呢?谢谢!!

解决方案 »

  1.   

    http://www.eaoo.com/design/list.asp?classid=2&Nclassid=13
      

  2.   

    1、OninitDialog中用SetTimer(n)设定一个延时,再在OnTimer函数中处理就可以了。
    2、为什么不可以用其它消息代替wm_paint,如果非要的话。在线程中延时发送三个消就不会有问题。有延时系统就有时间可以处理消息了。
      

  3.   

    1 初始化对话框在绘制对话框之前,因为这里来绘制按钮等;
      可以用定时器实现:
       SetTimer();
    2on_paint当队列中没消息时,也就是在空闲时间时OnIdle();系统调用这个消息完成窗口的重画,如果你接触过游戏编程,你也会发现很多人物,场景的更新就是在空闲时间进行的;
    如下:
      if(PeekMessage(&msg, wparam,lparam)//取消息,没有就返回NULL
       {
            TranslateMesage(&msg);
            DispatMessage(&msg);
       }
      else
      {OnIdle();}
      

  4.   

    但是我并不感觉自己想的setTimer()是个很好的方法
    创建线程也可以实现,看你有没有那本事了
      

  5.   

    我得本意:
    在一个存盘得时候,弹出对话框,显示进度条.最后得界面类似于安装软件时得进度条.
    要存盘得内容是在对话框显示之前就构造好了得.SetTimer得方法不可取.高手们还有没有除了创建一个线程以外得其它得方法.
      

  6.   

    要“在一个存盘得时候,弹出对话框,显示进度条.最后得界面类似于安装软件时得进度条.”就需要不断的采样文件保存进度,应该用“SetTimer得方法”。