Access 2002

Стиль окна


О том, что вы хотите получить или установить стиль окна, обеим этим функциям нужно сообщить с помощью константы GWL STYLE.

Чтобы отключить строку заголовка, надлежит изменить значение, возвращенное функцией GetWi ndowLong. Windows интерпретирует это 32-разрядное значение как набор из 32 двоичных флагов, каждый из которых управляет одним из атрибутов окна и может иметь значение 0 (False) или 1 (True). Например, стиль окна содержит биты, управляющие выводом строки заголовка, кнопок управления окном и системного меню. Access позволяет управлять всеми этими элементами, за исключением строки заголовка.

Для изменения одной из установок можно использовать оператор побитового сравнения And или Or. Оператор And сравнивает два значения и возвращает 1 в позициях, в которых биты обоих операндов имеют значения 1, и 0, где бит хотя бы

одного из операндов равен 0. Оператор Ог возвращает 1 в тех позициях, где хоть один из операндов имеет значение 1, и 0 в позициях, где оба операнда равны 0.

Таким образом, чтобы установить нужный бит в единицу, следует выполнить операцию Ог, используя в качестве одного операнда исходное значение, а в качестве другого четыре байта, в которых все биты, за исключением изменяемого, равны нулю. Нужный результат будет получен потому, что бит, к которому применена операция «Ог 0», остается неизменным, а бит, к которому применена операция «Ог 1», получает значение 1. Хорошей иллюстрацией к сказанному является схема, 7.27. Она демонстрирует, как с помощью оператора Ог и константы WS_CAPTION устанавливается в единицу один бит константы стиля окна.

Для установки нужного бита в ноль используется оператор And и число, имеющее единицы во всех разрядах, кроме того, который требуется установить в ноль. (Этот способ срабатывает потому, что операция And над любым битом и единицей не изменяет этот бит, тогда как операция And над любым битом и нулем дает в результате ноль.) Для управления установкой битов либо в единицу, либо в ноль можно использовать логический оператор Not, который инвертирует все разряды: нули устанавливает в единицы, а единицы в нули.

Комментарии закрыты