zoukankan      html  css  js  c++  java
  • 关于WM_WINDOWPOSCHANGING时间的一个小疑问

    当在WTL中处理这个事件时,如果

    MESSAGE_HANDLER(WM_WINDOWPOSCHANGING, OnPosChanging)
    LRESULT OnPosChanging(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
    & bHandled)
    {
    WINDOWPOS wp
    = *(LPWINDOWPOS)lParam;
    WINDOWPOS
    * wndPos =℘
    ....
    }

    按照MSDN中的说明,lParam是一个指向WINDOWPOS的指针。以我的理解可以直接使用这个数据来进行处理。

    但是实验发现,如果我将这个结构数据复制一下(如上面代码所示)和直接使用的效果是不一样的。

    当直接使用指针时,如果对其中的数据进行更改,比如更改了宽度, 然后调用defWindowProc,此时生成的窗口大小好像就变小了(实际的区域),

    而将这个数据复制之后,在调用defWindowProc, 此时生成的窗口区域没变

    这种现象可以通过自己处理WM_ERASEBKGND消息来观察。

    具体的原因还未知,不过msdn上有这样一句话,While this message is being processed, modifying any of the values in WINDOWPOS affects the window's new size, position, or place in the Z order,但是不知道说的影响的是什么区域。。具体在看看


    ....

    ....

  • 相关阅读:
    抽象类与接口的区别
    模板模式(Template Pattern)
    KVM虚拟化
    find文本处理(locate)实例学习记录
    AWK-文本处理测试实例记录
    Linux系统中如何查找大文件
    吞吐量和Iops、测试工具FIO使用
    linux了解
    了解docker
    语言资源国际化
  • 原文地址:https://www.cnblogs.com/kwliu/p/2131250.html
Copyright © 2011-2022 走看看