begin
CreateList:=
CreateWindowEx(WS_EX_CLIENTEDGE, \'LISTBOX\', nil, WS_CHILD or
WS_VISIBLE or LBS_NOTIFY or WS_BORDER or
WS_TABSTOP, x, y, width, height,
hParentWnd, HMENU(id), hAppInst, nil);
end;
Функция CreateLabel в листинге 2.13 создает статическую надпись (Label), предназначенную только для вывода текста.
...
Листинг 2.13.
Создание надписи
function CreateLabel(x, y, width, height, id: Integer;
caption: String):HWND;
begin
CreateLabel:=
CreateWindow(\'STATIC\', PAnsiChar(caption), WS_CHILD or
WS_VISIBLE, x, y, width, height, hParentWnd,
HMENU(id), hAppInst, nil);
end;
Однострочное текстовое поле с привычной рамкой создается функцией CreateEdit (листинг 2.14).
...
Листинг 2.14.
Создание однострочного текстового поля
function CreateEdit(x, y, width, height, id: Integer;
strInitText: String):HWND;
begin
CreateEdit:=
CreateWindowEx(WS_EX_CLIENTEDGE, \'EDIT\',
PAnsiChar(strInitText), WS_CHILD or
WS_VISIBLE or ES_AUTOHSCROLL or WS_TABSTOP,
x, y, width, height, hParentWnd,
HMENU(id), hAppInst, nil);
end;
Создание многострочного текстового поля (Memo) отличается от создания однострочного поля только указанием дополнительного флага ES_MULTILINE (листинг 2.15).
...
Листинг 2.15.
Создание многострочного текстового поля
function CreateMemo(x, y, width, height, id: Integer;
strInitText: String):HWND;
begin
CreateMemo:=
CreateWindowEx(WS_EX_CLIENTEDGE, \'EDIT\',
PAnsiChar(strInitText),
WS_CHILD or WS_VISIBLE or ES_AUTOVSCROLL or
ES_MULTILINE or WS_TABSTOP,
x, y, width, height, hParentWnd,
HMENU(id), hAppInst, nil);
end;
Приведенные здесь функции не претендуют на абсолютную универсальность и гибкость. Они введены для того, чтобы упростить создание элементов управления в тех частных случаях, которые приводятся далее в примерах этой главы.
Использование элементов управления
Элементы управления, как и все окна, управляются путем посылки им сообщений. Этим же способом они уведомляют родительские окна о некоторых произошедших событиях (например, выделение элемента в списке, нажатие кнопки и т. д.).
Описание наиболее используемых сообщений для рассматриваемых элементов управления приводится в приложении 3. Мы же рассмотрим, как можно упростить работу с элементами управления в некоторых частных случаях, написав для этого специальные функции.
Итак, в демонстрационном проекте для управления переключателями и флажками предусмотрены следующие функции и процедуры (листинг 2.16).