我想处理一个窗口的Onsize动作。当调整窗口时,原窗口并不跟随着一起变动,只是显示一个框跟着鼠标移动,当鼠标左键松开后,窗口才变化到鼠标指定的位置。这样做的好处在于可以节省绘制窗口中内容的时间,也就是在onsizing时不必绘制。我在pretranslatemessage() 中没有截获wm_size或wm_sizing消息.

解决方案 »

  1.   


       你看到 OnSize 里面有一个调用基类的 OnSize 函数了吗? 你可以判断如果鼠标松开再调用它.
      

  2.   

    那样做是不行的。无论你是否处理onsize,或不调用基类的onsize,系统都会调整窗口的。
      

  3.   

    WINDOWS用的不就是这种方式么??
    勇HOOK应该可以,可能比较麻烦,我不知道是不是最好的方法,但可以实现
    截获系统的消息
    然后再调用相应的函数
      

  4.   

    窗口的大小的调整,最终都是由WM_GETMAXMININFO消息来控制的,所有你只要控制处理这个消息就可以了!
      

  5.   

    WM_GETMAXMININFO只能控制最大化和最小化时窗口的大小,但是普通情况的拖动改变窗口大小时是不行的。“拖动时显示窗口内容”也不是一个好办法。不可能在没有个运行我的程序的机器上都设置这个选项,而且也不是关闭“改变窗口大小时显示窗口内容”。
      

  6.   

    我的同事建议我首先处理NCMouseDown消息,然后处理MouseMove绘制虚框来表示窗口,响应mouseup消息重新修改窗口尺寸,不知可不可以?
      

  7.   

    FlyingSnow(十二月飞雪) 你的作法其实就是自己实现windows窗口的缩放功能。
    但如果鼠标拖出了你的界面范围就找不到mouseup了。