【问题标题】:determining child window positions确定子窗口位置
【发布时间】:2009-12-02 19:55:55
【问题描述】:

我正在尝试调试一个我不太熟悉的 win32 windows-mobile 应用程序。

我强制执行周期性 InvalidateRect(hWnd,NULL,FALSE) 并且每次我执行 WM_PAINT 方法时都会被调用,但是 GetUpdateRect() 返回 0,0,0,0,显然没有任何绘制可见. GetWindowRect() 和 GetClientRect() 显示窗口存在且大小不为零。

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

我应该如何调试这个?例如。我可以列出这些孩子及其职位吗?

【问题讨论】:

    标签: windows-mobile winapi


    【解决方案1】:

    我想您已经意识到这一点,但以防万一,如果您在处理 WM_PAINT 时调用 GetUpdateRect 是在调用 BeginPaint 之后,那么接收到空矩形是预期的行为。请参阅 GetUpdateRec 文档中的备注:

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

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

    您可以使用 EnumChildWindows 枚举子窗口。

    【讨论】:

      【解决方案2】:

      我会从 Remote Spy++ 开始,看看发生了什么。也可以拨打FindWindowEx看兄弟姐妹等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-18
        • 1970-01-01
        相关资源
        最近更新 更多