win32 SDK рисование дочерних окон (C / C ++) - PullRequest
1 голос
/ 17 января 2009

Я использую Win32 Platform SDK (в XP Pro) для создания приложения, состоящего из одного главного окна с несколькими дочерними окнами.

Переданные в CreateWindow стили: WS_OVERLAPPEDWINDOW | WS_VISIBLE (для главного окна) и WS_CHILDWINDOW | WS_VISIBLE для дочерних элементов.

Ошибка, которую я вижу, заключается в том, что, когда поверх моего приложения перетаскивается другое приложение, базовые окна не перерисовываются. Простой (но неопрятный) способ форсировать обновление - «перемешать» заголовок.

Я предполагаю, что мне не хватает сообщения Windows или неправильно вызывается функция win32. Большая часть моего кода прямо из книги Петцольда 95.

Если это имеет значение, главное окно не должно ничего рисовать: дочерние окна выполняют все функции отображения.

1 Ответ

0 голосов
/ 17 января 2009

Похоже, вы не вызываете DefWindowProc для сообщения WM_PAINT.

Вы уверены, что правильно обрабатываете событие WM_PAINT ? В частности, убедитесь, что для этого сообщения WM_PAINT, которое вы звоните:

DefWindowProc(hwnd,msg,wParam,lParam);

WM_PAINT будет вызываться, когда ваше окно необходимо перекрасить.

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

...