CanFocus - Определяет, может ли компонент получать фокус, то есть получать сообщения пользователя.
ContainsControl - Определяет, является ли указанный компонент прямым или косвенным наследником данного оконного элемента.
ControlAtPos - Возвращает ссылку на потомка, расположенного в заданных координатах
FindNextControl - Возвращает очередной оконный компонент в последовательности табуляции.
Focused - Определяет, находится ли оконный элемент в фокусе.
GetTabOrderList - Строит список дочерних компонентов в последовательности табуляции.
HandleAllocated - Проверяет наличие дескриптора окна компонента.
HandleNeeded -Создает дескриптор окна, если он до этого не существовал.
Invalidate - Сообщает о необходимости перерисовки компонентов.
Realign - Выравнивает компоненты в оконном элементе.
Repaint - Перерисовывает изображение компонента на экране с помощью Invalidate.
ScaleBy - Масштабирует оконный элемент и все содержащиеся в нем компоненты.
ScaleControls - Изменяет масштаб компонентов в оконном элементе, не изменяя масштаба самого оконного элемента.
ScrollBy - Сдвигает содержимое оконного элемента.
SelectFirst - Передает фокус первому дочернему компоненту.
SelectNext - Передает фокус следующему компоненту.
SetBounds - Одновременно устанавливает положение и размера компонента (Left, Top, Width, Height). Раздельное изменение менее эффективно, т.к. всякий раз вызывает перерисовку.
SetChildOrder - Изменяет позицию компонента в списке дочерних компонентов.
SetFocus - Передает фокус элементу (активизирует его).
SetZOrder - Перемещает компонент вверх или вниз относительно других компонентов.
Update - Немедленная перерисовка компонента.
Специальные методы класса TWinControl:
CreateWnd - Создаёт окно.
DestroyWnd - Уничтожает окно.
CreateWindowHandle - Создаёт оконный дескриптор.
DestroyWindowHandle - Уничтожает оконный дескриптор.
CreateParams - Инициализирует значения оконных параметров. Перегрузка метода позволяет менять параметры окна, установленные по умолчанию.
Класс TCustomControl - класс, производный от TWinControl. Его можно рассматривать как "строительную площадку" для создания компонентов, соответствующих оригинальным требованиям пользователя. Данный класс предоставляет полотно для рисования (класс TCanvas) и виртуальный метод Paint, перегрузка которого позволит отображать компоненты так, как вы пожелаете. Будучи оконным элементом управления, TCustomControl может принимать фокус ввода. Класс TGraphicControl - предназначен для создания визуальных компонентов, которые не являются окнами, т.е. не могут содержать в себе других компонентов и не могут получать фокус ввода. Главное предназначение данного класса - способность отображать графику или текст на компоненте. Класс TGraphicControl также передает своим потомкам свойство Сanvas. Виртуальный метод Paint вызывается в ответ на сообщение WM_PAINT, принимаемое родительским элементом управления. Класс TGraphicControl не пользуется системными ресурсами Windows, т.к. не требует оконного дескриптора. Методы рисования исполняются немного быстрее за счёт того, что перерисовка компонента не связана с диспетчеризацией Windows-сообщений, а реализуется процессом, заложенным в родителе данного элемента.
Билет 28
Теперь давайте рассмотрим объект Application. Он предназначен для хранения глобальных переменных ASP-приложения, то есть переменных, которые доступны каждому сеансу приложения. Эти переменные находятся в коллекции Contents, к которой обычно обращаются сокращенно. Например, запишем следующий код в файл default.asp.
После этого исполним сценарий default.asp, а затем test.asp. Последний выведет строку test в окне браузера. Вообще, в какой бы сценарий приложения мы не вставили код test.asp, результат будет одним и тем же.
Объект Application предоставляет разработчикам два метода:
• Метод Lock.
• Метод Unlock.
Они предназначены для блокирования и разблокирования, соответственно, всего приложения. Например, чтобы избежать ситуации, когда в переменную уровня приложения записываются одновременно два значения, можно применить следующий код:
<%
Application.Lock
Application(“MyVar”)=someValue
Application.Unlock
%>
Билет 31
Сейчас мы рассмотрим для чего нужны DLL (Dynamic Link Library - динамически компануемая библиотека) и как их создавать. DLL- это участок кода хранимый в файле с расширением .dll. Код может быть использован другими программами, но сама посебе библиотека прораммой не является. Вобщем-то, динамически компонуемые библиотеки представляют собой набао скомпилированныых функций. Но у ютих библиотек есть свой особенности, так например, если каккието две или более программы для Windows одновременно исполняются и используют функции, находящиеся в одной DLL, то в памяти будет постоянно находится только одна библиотека, обеспечивая тем самым экономное расходование памяти. Загрузка библиотеки в память может быть статической и динамической.
При статической загрузке DLL автоматически загружается при запуске исользующего ее приложения. Такая DLL содержит экспортируемые функции, описание которых находится в файле библиотеки импорта(import library file - .lib). Для использования статической загрузки вы должны на этапе компоновки к программе додключить .lib файл вашей DLL. В C++ Builder это сводится к включения в проект .lib файла через менджер проектов.
При диамической загрузке вы можете загружать DLL при необходимости, выгрузить ее когода она ненужна. Однако работать с такими библиотеками сложнее чем со статическими.
Билет 34
Прежде всего, я хочу сказать, что работа Windows основана на сообщениях. Так Windows посылает любому окну такие сообщения как (WM_PAINT,WM_ACTIVATE,WM_LBUTTONCLICK,…). Вы, вероятно, заметили, что каждое сообщение имеет префикс WM_ (Window Message). Окнами в Windows являются не только формы, но и кнопки, ListBox'ы, ComboBox'ы и т. п. Словом все компоненты, производные от класса TWinControl являются окнами. Сообщения, адресованные кнопкам, начинаются с префикса BM_ (например, BM_CLICK), а к спискам (ListBox) - LB_(LB_GETCOUNT).
Для работы с окнами Windows предоставляет большое количество функций, которые описаны в модуле Windows.pas, и экспортируются из Windows'овских библиотек (DLL - Dynamic Link Library). Конечно, в рамках одной статьи нельзя рассмотреть ВСЕ функции API, поэтому здесь будут рассмотрены только некоторые из них. Вот они:
EnumWindows - Просматривает все главные окнаFindWindow - Ищет окно в системе
Функция может искать findwindows окна либо по заголовку, либо по имени класса, в зависимости от того, что известно. Ну и, естественно, хендл надо получить: А EnumWindows используется для того, чтобы перебрать все окна, существующие в данный момент.
Билет 37
Установка области перемещения указателя мыши |
* |
* |
|
|
Установка области перемещения указателя мыши производится при помощи функции API function ClipCursor(lpRect : PRect):boolean; lpRect - указатель на TRect, определяющий разрешенную область перемещения. Курсор мыши не может покинуть заданную зону до отмены режима, который производится вызовом ClipCursor с параметром NULL (0). Пример:
procedure TForm1.Button1Click(Sender: TObject);
var
R : TRect;
begin
// Определяем область (координаты абсолютные)
R := Rect(10,10,50,50);
// Устанавливаем
ClipCursor(@R);
// Пауза на 10 сек.
Sleep(10000);
// Отменяем
ClipCursor(0);
end;
Данной функцией следует пользоваться очень осторожно, т.к. блокировка курсора в заданной области действует до момента вызова ClipCursor(0); Если приложение зависнет, то пользователь не сможет нормально работать с мышкой. Диапазон анулируется при нажатии CTRL+ALT+DEL
Определение и установка позиции указателя мыши. |
* |
* |
|
|
Для работы с указателем мыши предусмотрено две функции API function GetCursorPos(lpPoint : TPoint):boolean; Данная функция возвращает абсолютные экранные координаты указателя мыши. Если вызов функции пошел успешно, то возвращается true function SetCursorPos(X,Y : Integer):boolean; Данная функция устанавливает абсолютные экранные координаты указателя мыши. Если вызов функции пошел успешно, то возвращается true При помощи SetCursorPos можно блокировать работу с мышкой посредством вызова SetCursorPos(-1,-1) в цикле с маленьким интервалом. Например:
repeat
SetCursorPos(10000,10000);
Application.ProcessMessages;
until false;
билет 40
Параметры помещаются в стек слева направо. Очистка стека осуществляется вызываемой процедурой. Этот вызов обеспечивает обработку фиксированного числа параметров.