Объясните причину различия и устраните ошибку. Обратите внимание на то, что если в последнем параметре вызова MessageBox( ) указать флаг MB_TASKMODAL, то левая кнопка тоже станет блокировать сообщения в основное окно приложения, однако это неверное решение.

2. Внесите изменения в проект RotateWheel - дорисуйте обод колеса. Сведения о необходимой для этого функции EllipseO можно найти в справочной системе. Необходимо составить программу, рисующую N одновременно движущихся по экрану колес различного размера. Увеличивайте значение N до тех пор, пока не станет четко заметен процесс очистки и обновления экрана.

3. Как известно, после создания окна в оконную процедуру всегда приходит сообщение WM_PAINT. В проекте CS_HREDRAW это используется, чтобы при открытии окна сразу заполнить его рисунком конверта (рис. 4.3). Соответствующий код приведен в листинге 4.10.

Листинг 4.10

case WM PAINT: { PAINTSTRUCT ps:
Задание 1

Рис. 4.2. Задание 1

Задания для самостоятельного выполнения

HOC hdc - BeginPaintChWnd. &ps); RECT rect - ps.rcPaint"images/tmp6745-17.png" alt="Формирование дефектных областей при изменении размеров">

Рис. 4.3. Формирование дефектных областей при изменении размеров Размеры прямоугольника взяты равными дефектной области rect. По первому сообщению WM_PAINT вся рабочая область окна объявляется дефектной, поэтому при появлении окна контур прямоугольника совпадает с его рабочей областью. Если при помощи мыши изменять ширину или высоту окна, то будут приходить новые сообщения WM_PAINT. По каждому сообщению новые конверты рису-" ются (см. рис. 4.3) только в дефектной области. Слева показан вид окна при быстром, а справа - при медленном изменении размеров.

Ответьте, как будет выглядеть окно, если, потянув за угол окна, изменить одновременно его высоту и ширину? Проверьте ваши выводы, запустив выполнение программы.


⇐ Предыдущая| |Следующая ⇒