Отправляет email-рассылки с помощью сервиса Sendsay

Windows API в Delphi для начинающих

  Все выпуски  

Windows API в Delphi для начинающих


Информационный Канал Subscribe.Ru


Windows Api В Delphi для начинающих.

Выпуск 2.

Стили окон и классов.

 

 

 

 

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

CS_BYTEALIGNCLIENT – выравнивает клиентскую область окна по границе байта (в плоскости x), для того, чтобы увеличить производительность операций прорисовки. На мой взгляд, совершенно бесполезный стиль. Сейчас у нас не такие видеокарты, чтобы тормозилась прорисовка окон.:) ;

CS_BYTEALIGNWINDOW – то же самое, только выравнивается не клиентская область, а само окно. Тоже совершенно бесполезно;

CS_CLASSDC – делает так, что контекст устройства (device context (DC), о нем в следующих выпусках) становится общим у всех окон данного класса. Честно говоря, не разу не видел использования этого параметра, так что он тоже практически бесполезен;

CS_DBLCLKS – позволяет окну принимать сообщения о двойных кликах мыши;

CS_GLOBALCLASS – позволяет создать класс, который может использоваться не только в данном модуле, но и в других. Если не задан, то параметр hInstance при вызове функции CreateWindow(Ex) должен быть таким же, как и параметр hInstance в структуре WNDCLASSEX. Можно, например, создать DLL,  содержащую этот класс, затем внедрять ее в нужные процессы. Короче говоря, этот стиль – отмена привязки оконного класса к какому-либо модулю;

CS_HREDRAW – окно перерисовывается при изменении горизонтальных размеров или положения окна;

CS_NOCLOSE – просто запрещает кнопку Close в заголовке окна;

CS_OWNDC – создает уникальный DC для каждого окна;

CS_PARENTDC – устанавливает регион отсечения на такой же регион дочернего окна, чтобы дочернее окно могло рисовать на родительском;

CS_SAVEBITS ­– область экрана, затертая созданным окном, сохраняется в bitmap. Когда окно уничтожается, область восстанавливается из сохраненного bitmap’a и не перерисовывается;

CS_VREDRAW – окно перерисовывается при изменении вертикальных размеров или положения окна;

Теперь переходим к обычным стилям класса (начинающимся на WS_):

WS_BORDER – создается окно с рамкой, толщиной с линию;

WS_CAPTION – создается окно с заголовком. Этот стиль есть совокупность двух стилей – WS_DLGFRAME и WS_BORDER;

WS_CHILD – создается дочернее окно;

WS_CHILDWINDOW – то же, что и WS_CHILD;

WS_CLIPCHILDREN – исключает область, занятую дочерними окнами данного окна, когда с ним происходят операции перерисовки;

WS_CLIPSIBLINGS – для дочернего окна если задан этот стиль, то другие родственные перекрывающиеся (overlapped) дочерние окна, не будут перерисовываться;

WS_DISABLED – создается окно, которое находится в состоянии disabled, то есть не взаимодействует с пользователем;

WS_DLGFRAME – создается окно, которое имеет границу, обычно используемую в диалоговых окнах;

WS_GROUP – задает первый элемент управления (control) в группе control’ов. Группа содержит все control’ы созданные после него, до тех пор, пока не встретится control со стилем WS_GROUP, который будет первым в следующей группе;

WS_HSCROLL – создает окно с горизонтальной полосой прокрутки;

WS_ICONIC – создает свернутое в значок окно;

WS_MAXIMIZED – создает развернутое на весь экран окно;

WS_MAMIMIZEBOX – создает окно, у которого есть кнопка Maximize (развернуть). Не может сочетаться со стилем WS_EX_CONTEXTHELP. Для использования должен быть объявлен стиль WS_SYSMENU;

WS_MINIMIZE – то же, что WS_ICONIC;

WS_MINIMIZEBOX – создает окно, у которого есть кнопка Minimize (свернуть). Не может сочетаться со стилем WS_EX_CONTEXTHELP. Для использования должен быть объявлен стиль WS_SYSMENU;

WS_OVERLAPPED – создает перекрывающее (overlapped) окно, у которого есть рамка и заголовок;

WS_OVERLAPPEDWINDOW – создает перекрывающее окно, со стилями WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MAXIMIZEBOX и WS_MINIMIZEBOX;

WS_POPUP – создает pop-up окно. Обычно такие окна не имеют заголовка и их нельзя свернуть/развернуть;

WS_POPUPWINDOW – pop-up окно со стилями WS_BORDER, WS_POPUP и WS_SYSMENU. Чтобы увидеть системное меню, можно соединить стили WS_CAPTION и WS_POPUPWINDOW;

WS_SIZEBOX – создает окно, у которого есть рамка, позволяющая изменять размеры окна;

WS_SYSMENU – создает окно, у которого есть системное меню в заголовке;

WS_TABSTOP – создает control, который может получать фокус клавиатуры при нажатии клавиши TAB;

WS_THICKFRAME – то же, что и WS_SIZEBOX;

WS_TILED – aka WS_OVERLAPPED;

WS_TILEDWINDOW – как нетрудно догадаться, WS_OVERLAPPEDWINDOW;

WS_VISIBLE – создает окно, которое изначально видимо;

WS_VSCROLL – создает окно с вертикальной полосой прокрутки;

 

Ну вот и все, теперь перейдем к расширенным стилям (WS_EX_):

WS_EX_ACCEPTFILES – создается окно, которое поддерживает Drag&Drop файлов из проводника. При этом передается сообщение WM_DROPFILES;

WS_EX_APPWINDOW – сворачивает окно верхнего уровня на панель задач, когда окно свернуто;

WS_EX_CLIENTEDGE – окно имеет рамку с вдавленными краями;

WS_EX_CONTEXTHELP – в заголовке окна появляется кнопка – вопросительный знак, для использования контекстной справке. Вы видели такие знаки во многих диалоговых окнах. Этот стиль не может использоваться вместе со стилями WS_MAXIMIZEBOX и WS_MINIMIZEBOX;

WS_EX_CONTROLPARENT – позволяет пользователю перемещаться по дочерним окнам нажатием клавиши TAB;

WS_EX_DLGMODALFRAME – создает окно с двойной рамкой;

WS_EX_LEFT – окно имеет “left-aligned” (черт, непереводимо на нормальный язык, не по-левому расположенные же говорить :), лучше уж тогда пусть будет по-английски) свойства;

WS_EX_LEFTSCROLLBAR – если язык оболочки Еврейский, Арабский и т.д., то вертикальная полоса прокрутки находится слева, для других языков этот стиль игнорируется.

WS_EX_LTRREADING – текст в окне расположен слева направо, то есть не по-арабски и не по-еврейски. Этот стиль используется по-умолчанию.

WS_EX_MDICHILD – создает MDI (multiple document interface, до него мы тоже обязательно дойдем) дочернее окно;

WS_EX_NOPARENTNOTIFY – дочернее окно, созданное с этим стилем не посылает при своем создании или уничтожении сообщения WM_PARENTNOTIFY родительскому окну;

WS_EX_OVERLAPPEDWINDOW – создает окно со стилями WS_EX_CLIENTEDGE и WS_EX_WINDOWEDGE;

WS_EX_PALETTEWINDOW – объединяет стили WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW и WS_EX_TOPMOST;

WS_EX_RIGHT – окно имеет “right-aligned” свойства, если язык оболочки Арабский, Еврейский etc;

WS_EX_RIGHTSCROLLBAR – полоса прокрутки справа. Этот стиль используется по-умолчанию;

WS_EX_RTLREADING – текст в окне расположен справа налево, если язык оболочки является языком, на котором читается и пишется справа налево;

WS_EX_STATICEDGE – создается окно с трехмерной рамкой, как ,например, у компонента TGroupBox;

WS_EX_TOOLWINDOW – создается окно, заголовок которого меньше, чем обычно. Обычно такие окна используются для создания плавающих панелей инструментов, имеют одну кнопку “Close” в заголовке и не отображаются на панели задач;

WS_EX_TOPMOST – создается окно, располагающееся поверх всех окон, не имеющих этого стиля. Пример – TaskManager из Win2000\XP;

WS_EX_TRANSPARENT – означает то, что все окна, находящиеся под данным окном не закрыты им. Этот стиль не рекомендуется использовать при создании главных окон;

WS_EX_WINDOWEDGE – окно имеет рамку с поднятыми (raised) краями;

 

Кроме того, есть еще несколько мало кому известных интересных стилей:

WS_EX_LAYERED – используется для создания прозрачных окон в NT-системах;

WS_EX_LAYOUTRTL – зеркальное отображение окна и всех его control’ ов справа налево. При этом текст отображается нормально. Очень интересный стиль;

WS_EX_NOINHERITLAYOUT – отменяет применение предыдущего стиля к дочерним окнам данного окна;

WS_EX_NOACTIVATE – окно создается неактивируемым, то есть заголовок всегда серого (синего, зеленого и т.д. в зависимости от того, как у вас установлено) цвета.

 

На сегодня это все, по вопросам и предложениям обращайтесь на мой e-mail.

P.S. Напишите, следует ли рассматривать стили control’ов или вы в них разберетесь сами.

Aвтор рассылки, Дьячков Сергей aka Marouder, marouder@list.ru                                                                                  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное