Компьютерная графика. Полигональные модели перерисовку себя. Таким образом, изображение, лежащее под убираемым окном, восстанавливается полностью. Рассмотрим ситуацию, изображенную на рис. 5.2. Пусть убирается окно ш2. Тогда откроются следующие области (рис. 5.3). Таким образом, окно ёеБкТор должно заполнить область а\ а окно \у1 - область \у.

Изменение размеров(ге81ге).

3. Изменение размеров(ге81ге).

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

4. Передвижение окна (тоуе\¥тс1оу/).

Содержимое окна копируется на новое место (возможна и полная перерисовка всего окна), отрисовываются вновь открывшиеся части данного окна и других окон.

В ряде систем вместо немедленной перерисовки содержимого у окна устанавливается указатель на область, содержимое которой должно быть перерисовано. В подходящий момент для каждого окна, имеющего непустую область, требующую перерисовки, генерируется сообщение на перерисовку содержимого соответствующей области.

Рассмотрим механизм передачи сообщений в системе. Каждое сообщение обычно поступает сначала в системную очередь, откуда извлекается программой. Для некоторых сообщений при их создании явно указывается, какому окну они адресованы. Другие же сообщения, например сообщения от мыши и клавиатуры, изначально явных адресатов не имеют и потому распределяются специальным образом.

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

Рассмотрим следующую ситуацию: пользователь нажал кнопку мыши в тот момент, когда курсор мыши находился над нажимаемой кнопкой в окне. В этом случае кнопку нужно "нажать" (перерисовать ее изображение) и удерживать нажатой, пока нажата кнопка мыши. Однако если пользователь резко сдвинет мышь, удерживая кнопку мыши нажатой, то нажимаемая кнопка может не получить сообщения о том, что мышь покинула пределы нажимаемой кнопки (вследствие того, что, как только мышь покинет эти пределы, сообщения от нее будут поступать уже другому окну). При этом кнопка все время будет оставаться нажатой. Поэтому нажимаемая кнопка должна "захватить" мышь и удерживать ее, пока кнопка мыши нажата. Когда пользователь отпустит кнопку мыши, кнопка на экране "отжимается" и мышь "освобождается".


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