Графические устройства

         

Перекрытие окон



Перекрытие окон

При программировании большинства графических алгоритмов удобнее иметь дело с одним окном видеопамяти, независимо от того, сколько их есть на самом деле. Для этого надо изменить описанное в примере 2.8 гнездо подпрограмм так, чтобы при их вызове всегда изменялось столько окон видеопамяти, сколько их поддерживает видеокарта.

Изменения, которые надо внести только в подпрограмму setwin, поскольку только она обращается к процедуре VMC, заключаются в следующем. Окно А существует в любом случае, поэтому подпрограмма, в первую очередь, должна установить его номер. После этого надо проверить существование второго окна. Если его нет, то установка завершена. Если окно в существует, то ему надо присвоить тот же номер, который был присвоен окну А.

Напомним, что в примере 2.6 значение байта, отражающего состояние второго окна, копируется в переменную wine. При описании примера 2.6 было сказано, что содержимое winB может иметь только 4 значения: 0, 3, 5 или 7. Если оно равно нулю, то второго окна не существует. Три остальных значения указывают, для каких действий доступно второе окно. В данном случае для нас важен сам факт существования окна, а не то, для чего оно предназначено. Поэтому надо просто проверить состояние нулевого разряда байта winB, если он очищен, то окно не существует, а если установлен, то существует.

Подпрограмма SetWin для двух окон. Текст измененной подпрограммы Setwin приведен в примере 2.9. Его надо включить в пример 2.8 вместо описанного там варианта Setwin.



Содержание раздела