代码之家  ›  专栏  ›  技术社区  ›  Will

确定子窗口位置

  •  0
  • Will  · 技术社区  · 15 年前

    我正在尝试调试一个我基本上不熟悉的win32 windows移动应用程序。

    我强制一个周期性的invalidrect(hwnd,null,false),每次调用wm_paint方法时,都会调用它,但getUpdateRect()返回0,0,0,0,显然,所绘制的内容都是不可见的。getWindowRect()和getClientRect()显示窗口在那里,大小不是零。

    我猜窗户完全被它的孩子们遮住了。然而,试图在代码中找到这些孩子是一个迷宫。

    我应该如何进行调试?我能列出这些孩子和他们的职位吗?

    2 回复  |  直到 15 年前
        1
  •  0
  •   imaginaryboy    15 年前

    我想您已经意识到了这一点,但为了以防万一,如果在处理wm_paint时,对getUpdateRect的调用正在跟踪对beginpaint的调用,那么接收空rect是预期的行为。请参阅getupdaterec文档中的备注:

    Beginpaint函数检索到的更新矩形与GetUpdateRect检索到的更新矩形相同。

    Beginpaint自动验证更新区域,因此在对Beginpaint的调用后立即对GetUpdateRect的任何调用都会检索空的更新区域。

    可以用EnumChildWindows枚举子窗口。

        2
  •  0
  •   ctacke    15 年前

    我先从RemoteSpy++开始看看发生了什么。你也可以打电话 FindWindowEx 看看兄弟姐妹等等。