确定儿童窗口位置

时间:2009-12-02 19:55:56

标签: windows-mobile winapi

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

我强制定期使用InvalidateRect(hWnd,NULL,FALSE),每次调用WM_PAINT方法时,GetUpdateRect()返回0,0,0,0,显然没有任何被绘制的内容可见。 GetWindowRect()和GetClientRect()显示窗口在那里并且不是零大小。

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

我应该如何调试此问题?例如。我可以列出这些孩子和他们的职位吗?

2 个答案:

答案 0 :(得分:0)

我从Remote Spy ++开始,看看发生了什么。您也可以致电FindWindowEx查看兄弟姐妹等。

答案 1 :(得分:0)

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

  

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

     

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

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