2009-12-02 5 views
0

Я пытаюсь отлаживать приложение win32 windows-mobile, в котором я в основном не знаком.определение положения дочерних окон

Я заставляю периодический InvalidateRect (hWnd, NULL, FALSE) и каждый раз, когда я вызываю метод WM_PAINT, но GetUpdateRect() возвращает 0,0,0,0, и, очевидно, ничего, что нарисовано, видимый. GetWindowRect() и GetClientRect() показывают, что окно есть и не имеет нулевого размера.

Я угадываю, что это окно полностью закрыто его детьми. Однако его лабиринт пытается найти этих детей в коде.

Как подойти к отладке? Например. могу ли я перечислить этих детей и их должности?

ответ

0

Я предполагаю, что вы уже знаете об этом, но на всякий случай, если ваш вызов GetUpdateRect выполняет вызов BeginPaint во время обработки WM_PAINT, тогда получение пустого прямоугольника является ожидаемым поведением. См. Замечания в документах для GetUpdateRec:

Прямоугольник обновления, полученный функцией BeginPaint, идентичен тому, который был получен GetUpdateRect.

BeginPaint автоматически проверяет область обновления, поэтому любой вызов GetUpdateRect производится сразу же после вызова BeginPaint для получения пустой области обновления.

Вы можете перечислить дочерние окна с EnumChildWindows.

0

Я бы начал с Remote Spy ++, чтобы узнать, что происходит. Вы также можете позвонить FindWindowEx, чтобы посмотреть на братьев и сестер и т. Д.

Смежные вопросы