我在设置一个对话框的时候SetWindowPos的最后一个参数为SWP_NOZORDER|SWP_NOMOVE
当我使用MoveWindow()移动这个对话框的时候,这个对话框的父窗口没有进行主动刷新,我知道这是由于我设置了SWP_NOMOVE,但是这是为什么啊?是因为我设置了SWP_NOMOVE,所以在移动对话框的时候没有给父对话框发送刷新的消息吗?还是怎样?
注:这个对话框为disabled请求详细解答~!

解决方案 »

  1.   

    MoveWindow()调用时,会自动发送WM_PAINT消息,你跟下,看看消息被谁给截了.
      

  2.   

    SWP_NOMOVE只是保留当前的位置 
      

  3.   


    主窗口没有接受到WM_PAINT消息,我把这个子窗口的SWP_NOMOVE去掉之后再MoveWindow()主窗口就有接受到WM_PAINT了
    所以我就想知道 是因为子窗口SWP_NOMOVE 所以MoveWindow()没有发送WM_PAINT ?还是说发了WM_PAINT,那被谁劫走了?
    他为什么要劫走这个消息?
      

  4.   

    SetWindowPos中设置SWP_NOMOVE只是对这一次设置窗口位置有效而已,返回窗口当前位置,并且参数关于位置的那个x和y无效而已。这个更你后面用MoveWindow没有收到WM_PAINT消息是没有关系的MoveWindow的原型最后一个参数BOOL bRepaint = TRUE 是默认的是否重画
    一般有的话都会有重画的,至于你没有收到应该是其他的原因