определение позиций дочернего окна - PullRequest
0 голосов
/ 02 декабря 2009

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 04 декабря 2009

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

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

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

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

0 голосов
/ 03 декабря 2009

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

...