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,但是不知道说的影响的是什么区域。。具体在看看


    ....

    ....

  • 相关阅读:
    前端知识体系
    DOMContentLoaded与load的区别
    最佳网页宽度及其实现
    一些颜色工具网站
    Firebug入门指南
    CSS中背景图片定位方法
    字符编码笔记:ASCII,Unicode 和 UTF-8
    学JS的书籍
    深入理解定位父级offsetParent及偏移大小
    event——事件对象详解
  • 原文地址:https://www.cnblogs.com/kwliu/p/2131250.html
Copyright © 2011-2022 走看看