Создание выходной документации
окна или его части из-за другого окна;
при разворачивании или сворачивании окна;
при отображении данных из только что открытого файла;
при прокрутке, изменении или выборе данных, находящихся в окне.
Во многих случаях Windows берет на себя инициирование процесса отображения, отмечая область перерисовки и посылая функции соответствующего окна сообщение WM PAINT. Это сообщение обрабатывает само приложение, осуществляя процесс вывода данных в окно.
В ряде случаев приложение, изменив данные, может инициировать процесс вывода самостоятельно, используя то же сообщение. Однако может оказаться необходимым осуществлять вывод, продолжая выполнять некоторые действия. Характерный пример такого процесса – это чтение файла с одновременным выводом считанных данных в некоторое окно.
В любом случае приложению для начала вывода необходимо получить дескриптор контекста устройства вывода. Обработчик сообщения WM PAINT для этого должен использовать функцию BeginPaint, а при непосредственном выводе – функции GetDC или GefDCEx.
Сообщение WM PAINT
Итак, в большинстве случаев вывод осуществляется обработчиком сообщения WM PAINT. Windows посылает это сообщение окну только тогда, когда очередь сообщений пуста. Это достаточно разумно – изменения отображаются как бы блоками, сокращая тем самым время, затрачиваемое на вывод.
Для получения дескриптора контекста устройства приложение вызывает функцию BeginPaint, во время выполнения которой Windows настраивает область отсечения (обновления), т.
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |


