Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лекции / Shchupak_Yu._Win32_API_Razrabotka_prilozheniy_dlya_Windows

.pdf
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
13.15 Mб
Скачать

Быстрые клавиши

301

 

 

 

СОВЕТ

Теоретически, можно определить быструю клавишу почти для каждой виртуальной или символьной клавиши в сочетании с клавишами Shift, Ctrl или Alt. Однако надо избегать использования тех быстрых клавиш, которые имеют традиционное применение во многих приложениях Windows. Например, F1 обычно используется для вызова контекстной справки, а клавиши F4, F5 и F6 — для специальных функций многооконного интерфейса приложений. Нежелательно назначать быстрыми клавишами клавиши Tab, Enter, Esc и Spacebar, поскольку они часто используются для системных функций. Например, Alt+F4 закрывает приложение или окно, Alt+Tab переключает на следующее окно, а Ctrl+Esc вызывает меню Старт.

Описанная процедура определения строки в таблице быстрых клавиш повто ряется для задания информации о каждой быстрой клавише в обрабатываемом меню. После этого определенный ресурс сохраняется в файле описания ресурсов.

Загрузка таблицы быстрых клавиш

Во время работы программы для загрузки таблицы быстрых клавиш в память и получения ее дескриптора используется функция LoadAccelerators:

HACCEL LoadAccelerators

(

HINSTANCE hInstance,

// дескриптор экземпляра приложения

LPCTSTR lpTableName

// имя таблицы быстрых клавиш

);

 

Для передачи второму параметру имени таблицы IDR_ACCELERATOR1, назначен ного редактором ресурсов, необходимо использовать макрос MAKEINTRESOURCE.

В случае успешного выполнения функция возвращает дескриптор таблицы бы стрых клавиш. В случае неудачного завершения функция возвращает значение NULL.

Модификация цикла обработки сообщений

Для обработки быстрых клавиш приложение должно перехватывать сообщения клавиатуры, анализировать их коды и в случае совпадения с кодом, определенным в таблице быстрых клавиш, направлять соответствующее сообщение в оконную процедуру главного окна. Все это может выполнить функция TranslateAccelerator:

int TranslateAccelerator (

HWND hWnd,

// дескриптор окна – получателя сообщения

HACCEL hAccTable, // дескриптор таблицы быстрых

клавиш

LPMSG lpMsg

// указатель на структуру MSG

 

);

Функция преобразует сообщение WM_KEYDOWN или WM_SYSKEYDOWN1 в сообще ние WM_COMMAND или WM_SYSCOMMAND, если таблица акселераторов содержит соот ветствующий код виртуальной клавиши (с учетом состояния клавиш Ctrl, Altи Shift).

Сформированное сообщение, содержащее идентификатор быстрой клавиши в младшем слове параметра wParam, отправляется непосредственно в оконную про цедуру, минуя очередь сообщений. Возврат из функции TranslateAccelerator проис ходит только после того, как оконная процедура обработает посланное сообщение.

Если функция TranslateAccelerator возвращает ненулевое значение, это зна чит, что преобразование комбинации клавиш и обработка отправленного сооб щения завершились успешно. В этом случае приложение не должно повторно

1 Сообщения клавиатуры рассматривались в главе 4.

302

Глава 6. Меню и быстрые клавиши

 

 

обрабатывать эту комбинацию клавиш при помощи функций TranslateMessage

и DispatchMessage.

Данное требование можно выполнить, если применяемый до сих пор традици онный цикл обработки сообщений

while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg);

}

преобразовать к следующему виду:

while (GetMessage(&msg, NULL, 0, 0)) {

if (!TranslateAccelerator(hMainWnd, hAccel, &msg)) { TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

где hMainWnd — дескриптор главного окна приложения.

Приложение MenuDemo3

Приложение MenuDemo3 является улучшенной версией приложения MenuDemo1. Оно выполняет те же функции и имеет точно такое же меню, но теперь программа позволяет использовать быстрые клавиши, дублирующие некоторые команды меню. Дублируемые пункты меню и соответствующие им быстрые клавиши пе речислены в табл. 6.11.

Таблица 6.11. Спецификации быстрых клавиш для программы MenuDemo3

Подменю

Имя пункта

Идентификатор

Быстрая клавиша

 

 

 

 

File

&Open…

IDM_OPEN

Ctrl+O

 

Sa&ve…

IDM_SAVE

Ctrl+S

Shape

&Rectangle

ID_RECTANGLE

F2

 

Rhom&b

ID_RHOMB

F3

 

&Ellipse

ID_ELLIPSE

F4

Color

&Red

ID_RED

Ctrl+R

 

&Green

ID_GREEN

Ctrl+G

 

&Blue

ID_BLUE

Ctrl+B

 

&Dark

ID_DARK

F10

 

&Medium

ID_MEDIUM

F11

 

&Light

ID_LIGHT

F12

 

 

 

 

Создайте новый проект с именем MenuDemo3. Скопируйте из папки проекта MenuDemo1 в папку проекта MenuDemo3 файлы с расширениями .cpp, .h и .rc, скор ректировав их имена заменой MenuDemo1 на MenuDemo3. Добавьте скопированные файлы в состав проекта. В окне Workspace перейдите на вкладку ResourceView и вызовите редактор меню, сделав двойной щелчок мышью на значке IDR_MENU1. Теперь следует отредактировать пункты меню, указанные в табл. 6.11, добавив к имени каждого пункта символьную строку \t<обозначение быстрой клавиши>, взяв обозначения быстрых клавиш из четвертого столбца табл. 6.11.

Вызовите редактор таблицы быстрых клавиш. Определите быстрые клавиши, используя информацию из третьего и четвертого столбцов табл. 6.11. Для функ

Быстрые клавиши

303

 

 

 

циональных клавиш F2, F3 и им подобных в поле Key следует указывать идентифи каторы VK_F2, VK_F31 и т. д. Также следует сбросить флажок Ctrl.

Исходный код файла MenuDemo3.cpp приведен в листинге 6.3.

Листинг 6.3. Проект MenuDemo3

//////////////////////////////////////////////////////////////////////

// MenuDemo3.cpp

#include

<windows.h>

#include

<stdio.h>

 

#include

"KWnd.h"

 

#include

"resource.h"

#define W

200

// ширина фигуры

#define H

140

// высота фигуры

enum ShapeSize { MAX, MIN };

typedef struct {

 

int id_shape;

// идентификатор фигуры

BOOL fRed;

// компонент красного цвета

BOOL fGreen;

// компонент зеленого цвета

BOOL fBlue;

// компонент синего цвета

int id_bright;

// идентификатор яркости цвета

} ShapeData;

 

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //==================================================================== int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,

LPSTR lpCmdLine, int nCmdShow)

{

HACCEL hAccel; MSG msg;

KWnd mainWnd("MenuDemo3", hInstance, nCmdShow, WndProc, MAKEINTRESOURCE(IDR_MENU1), 100, 100, 400, 300);

// Загрузка таблицы быстрых клавиш

hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR1));

while (GetMessage(&msg, NULL, 0, 0)) {

//Если сообщение не от быстрой клавиши,

//то выполнить стандартную обработку

if (!TranslateAccelerator(mainWnd.GetHWnd(), hAccel, &msg)) { TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

return msg.wParam;

}

//====================================================================

LRESULT CALLBACK WndProc(HWND

hWnd,

UINT uMsg, WPARAM wParam, LPARAM lParam)

{

 

 

/* Текст функции из листинга

6.1

*/

}

 

 

//////////////////////////////////////////////////////////////////////

Откомпилируйте проект и протестируйте программу MenuDemo3.exe, вызывая команды меню с помощью быстрых клавиш.

1 Коды виртуальных клавиш приведены в табл. 4.3 (глава 4).

304

Глава 7. Диалоговые окна

7Диалоговые окна

Диалоговые окна, или окна диалога (dialog box), являются одним из важнейших элементов графического интерфейса пользователя Windows приложений. Обыч но диалоговые окна используются для ввода пользователем дополнительной ин формации, а также для вывода результатов работы приложения.

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

От обычных окон диалоговые окна отличаются тем, что они создаются на базе предопределенного в Windows класса диалоговых окон. Оконная процедура этого класса, спрятанная в недрах Windows, обеспечивает обработку сообщений, посту пающих в диалоговое окно, а также задает специфическое поведение элементов управления диалогового окна. Например, она управляет передачей фокуса ввода от одного элемента другому или переносит фокус ввода между группами элемен тов при нажатии клавиши Tab. Эту невидимую для программиста оконную проце дуру иногда называют менеджером диалогового окна (dialog box manager).

Менеджер диалогового окна передает многие сообщения в функцию, опреде ленную в вашем приложении, которая называется процедурой диалогового окна, или просто диалоговой процедурой (dialog procedure). Эта процедура похожа на обычную оконную процедуру, но все же имеет некоторые важные особенности, которые будут рассмотрены ниже.

Второе отличие диалоговых окон от обычных окон состоит в том, что они все гда связаны с шаблоном диалога, содержащим размеры окна, состав и расположе ние элементов управления. Шаблон диалогового окна можно определить двумя способами: а) в файле описания ресурсов, используя редактор диалоговых окон, б) создавая шаблон в памяти в процессе работы приложения. В книге рассматри вается только первый способ, благо он наиболее простой и распространенный.

Типы диалоговых окон

Диалоговые окна бывают модальные (modal) и немодальные (modeless). Они раз личаются по влиянию на дальнейшее выполнение программы.

Элементы управления в диалоговом окне

305

 

 

 

Когда в программе вызывается модальное диалоговое окно, оно ожидает выпол нения некоторого действия со стороны пользователя, прежде чем программа смо жет продолжить свое выполнение. Пользователь не может переключиться между диалоговым окном и другими окнами программы. Он должен явно закрыть диало говое окно, что обычно делается щелчком на кнопке OK или Cancel. Однако пользо ватель может переключаться в другие программы, не закрыв диалоговое окно.

Существует также специальный вид модальных диалоговых окон — систем ные модальные (system modal) окна, которые не позволяют переключаться даже в другие программы. Они сообщают о серьезных проблемах, и пользователь дол жен закрыть системное модальное окно, чтобы продолжить работу в Windows.

Немодальное диалоговое окно не приостанавливает выполнение программы. Оно может получать и терять фокус ввода. Это значит, что пользователь может свободно переключаться между диалоговым окном и другими окнами програм мы. Окна этого типа предпочтительней использовать в тех случаях, когда они содержат элементы управления, которые должны быть в любой момент доступ ны пользователю.

Элементы управления в диалоговом окне

Основную функциональную нагрузку в диалоговом окне выполняют элементы управления. Все версии Windows поддерживают так называемые базовые элемен ты управления, перечисленные в табл. 7.1.

Таблица 7.1. Базовые элементы управления

Элемент управления

Описание

Предопределенный

 

 

оконный класс

 

 

 

Рисунок (Picture control)

Элемент управления, отображающий пус-

STATIC

 

тую прямоугольную рамку, закрашенную

 

 

прямоугольную область или растровый образ

 

Надпись (Static text)

Текстовая строка. Обычно используется как

STATIC

 

метка (поясняющая надпись) рядом с полем

 

 

ввода или элементом управления другого

 

 

типа. Может применяться как самостоятель-

 

 

ная информационная надпись

 

Рамка (Group box)

Прямоугольная рамка с надписью, использу-

BUTTON

 

емая для группирования набора связанных

 

 

элементов управления

 

Кнопка (Button)

Элемент, который пользователь «нажимает»,

BUTTON

 

чтобы выполнить какое-либо действие

 

Флажок (Check box)

Элемент, который может быть либо установ-

BUTTON

 

лен, либо сброшен для выбора или отмены

 

 

опции, которая не связана с другими опциями

 

Переключатель

Элемент, используемый для выбора одной из

BUTTON

(Radio button)

группы взаимоисключающих опций. В группе

 

 

переключателей может быть выбран только

 

 

îäèí èç íèõ

 

Список (List box)

Прямоугольное окно со списком элементов

LISTBOX

 

(строк), из которого пользователь может выб-

 

 

рать любой элемент

 

 

 

 

 

 

продолжение

306

Глава 7. Диалоговые окна

 

 

Таблица 7.1. (продолжение)

 

 

 

 

Элемент управления

Описание

Предопределенный

 

 

оконный класс

 

 

 

Окно редактирования

Прямоугольное окно для ввода текста с кла-

EDIT

или текстовое поле

виатуры. Элемент предоставляет определен-

 

(Edit box)

ные средства редактирования текста

 

Комбинированный список

Элемент, объединяющий список с окном ре-

COMBOBOX

(Combo box)

дактирования

 

Полоса прокрутки

Элемент управления линейкой прокрутки

SCROLLBAR

(Scroll bar)

 

 

 

 

 

Начиная с Windows 95, в системе используется библиотека элементов управ ления общего пользования (common control library). Новые элементы управления, включенные в эту библиотеку, дополняют базовые элементы управления и позво ляют придать приложениям более совершенный вид. Работа с элементами управ ления общего пользования рассматривается в следующей главе.

Обычно элементы управления определяются в шаблоне диалогового окна на языке описания шаблона диалога. В случае создания шаблона с помощью редакто ра диалоговых окон эти определения элементов генерируются автоматически. Одним из атрибутов описания элемента управления в шаблоне диалога является

идентификатор элемента управления.

Каждый элемент управления, описанный в шаблоне диалога, реализуется Windows в виде окна соответствующего класса. Это окно является дочерним ок ном по отношению к диалоговому окну. Как всякое окно, оно идентифицируется своим дескриптором типа HWND. Вместо термина «дескриптор окна элемента уп равления» в документации (MSDN) обычно используется более короткий тер мин «дескриптор элемента управления».

Если элемент управления определен в шаблоне диалога, то программисту из вестен только его идентификатор. В то же время многие функции, работающие с элементом управления, принимают в качестве параметра его дескриптор. Для получения дескриптора элемента управления по его идентификатору использу ется функция GetDlgItem:

HWND GetDlgItem (

 

 

 

HWND hDlg,

//

дескриптор диалогового

îêíà

int nIDDlgItem

//

идентификатор элемента

управления

);

 

 

 

В случае успешного завершения функция возвращает дескриптор элемента управления, в случае ошибки — значение NULL.

Иногда возникает необходимость обратного преобразования, чтобы по деск риптору элемента управления определить его идентификатор. Такую проблему решает вызов функции GetDlgCtrlID:

int GetDlgCtrlID (

 

HWND hwndCtl

// дескриптор элемента управления

);

 

Ранее было сказано, что элементы управления обычно определяются в шаблоне диалогового окна. Существует, однако, и альтернативный способ создания и разме щения элемента управления при помощи функции CreateWindiow, первому параметру которой передается имя предопределенного оконного класса (см. табл. 1.7 в главе 1). Но такой подход используется гораздо реже.

Создание и обработка диалогового окна

307

 

 

 

Элементы управления могут быть разрешенными (enabled) или запрещенными (disabled). По умолчанию все элементы управления имеют статус разрешенных элементов. Запрещенные элементы выводятся на экран серым цветом и не вос принимают пользовательский ввод с клавиатуры или от мыши. Изменение стату са элементов управления осуществляется при помощи функции EnableWindow.

Создание и обработка диалогового окна

Создание диалогового окна и работа с ним требуют выполнения следующей пос ледовательности действий:

1.Определение шаблона диалогового окна.

2.Определение диалоговой процедуры.

3.Вызов функции создания диалогового окна.

4.Обмен данными между диалоговой процедурой и вызывающей функцией окна.

Реализация некоторых шагов различается для модальных и немодальных диа логовых окон.

Шаблон диалогового окна

Определение шаблона диалогового окна в файле описания ресурсов имеет следу ющий вид:

имя_диалога DIALOG DISCARDABLE x, y, width, height [ опции_диалога ]

BEGIN

Определение элементов диалогового окна

END

Имя_диалога интерпретируется Windows либо как C строка с завершающим нулевым символом, либо как целочисленный идентификатор. Правила интер претации такие же, как и для имени пиктограммы в файле описания ресурсов (см. главу 5).

Параметры x, y, width, height задают позицию и размеры диалогового окна. Коор динаты x, y измеряются относительно левого верхнего угла окна, из которого выз вано диалоговое окно. Все координаты и размеры задаются не в пикселах, а в спе циальных шаблонных единицах диалогового окна.

Опции диалога — это необязательные инструкции, в которых можно указы вать значения STYLE, CAPTION, FONT и многие другие параметры.

Инструкция STYLE напоминает параметр dwStyle функции CreateWindow. Для мо дальных окон диалога обычно используются флаги WS_POPUP и WS_DLGFRAME.

Инструкция CAPTION применяется для объявления диалоговых окон, которые имеют стиль WS_CAPTION. Наличие заголовка позволяет пользователям переме щать окно по экрану. Заголовок может также служить напоминанием о том, какое действие выполняется в этом окне.

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

308

Глава 7. Диалоговые окна

 

 

Шаблонная система единиц

В описании шаблона диалогового окна применяется специальная шаблонная систе ма единиц. Размеры и расположение диалогового окна, задаваемые в параметрах x, y, width, height, а также всех элементов управления должны быть указаны в единицах этой системы, называемых также шаблонными единицами (dialog template units).

Шаблонные единицы определяются отдельно по горизонтали и по вертикали через ширину и высоту используемого в диалоговом окне шрифта. Одна шаблон ная единица по горизонтали составляет четверть средней ширины символов ис пользуемого шрифта. Одна шаблонная единица по вертикали составляет восьмую часть высоты символов.

По умолчанию в диалоговом окне используется системный шрифт. Поскольку высота символов системного шрифта примерно вдвое больше его ширины, то раз меры делений по осям X и Y примерно одинаковы.

Среднюю ширину и высоту символов для системного шрифта можно опреде лить с помощью функции GetDialogBaseUnits. Она возвращает 32 разрядное значе ние, младшее слово которого равно средней ширине символов в пикселах (baseunitX), а старшее слово — высоте символов в пикселах (baseunitY). Таким образом, для пересчета шаблонных единиц templateunitX, templateunitY в пикселы можно вос пользоваться следующими выражениями:

pixelX = templateunitX * baseunitX / 4; pixelY = templateunitY * baseunitY / 8;

Подобная система единиц измерения позволяет операционной системе пра вильно масштабировать диалоговое окно независимо от размера шрифта, уста новленного в настройках экрана.

По умолчанию Windows использует «мелкий шрифт» (96 точек на дюйм). В этом режиме функция GetDialogBaseUnits возвращает значения baseunitX = 8, baseunitY = 16.

Но пользователь может выбрать более крупный шрифт. Для смены шрифта нужно щелкнуть правой кнопкой мыши на поверхности рабочего стола и в по явившемся диалоговом окне Свойства: Экран нажать кнопку Дополнительно…, а за тем в окне Свойства перейти на вкладку Общие. Комбинированный список Размер шрифта позволяет выбрать другой шрифт.

Если пользователь выберет «крупный шрифт» (120 точек на дюйм) и переза грузит систему, чтобы новые параметры вступили в силу, то после этого функция

GetDialogBaseUnits будет возвращать значения baseunitX = 10, baseunitY = 20. Windows автоматически увеличит размеры диалоговых окон, и поэтому все текстовые над писи по прежнему будут размещены правильно.

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

Модальный диалог

Техника добавления к приложению простейшего модального диалогового окна будет рассмотрена на примере разработки приложения DlgDemo1.

Модальный диалог

309

 

 

 

Приложение DlgDemo1 является модификацией программы MenuDemo1, кото рая была рассмотрена в предыдущей главе. Напомним, что в этой программе при выборе пункта меню About… вызывается функция MessageBox для вывода окна сообщений, содержащего информационный текст. Окно сообщений тоже являет ся модальным диалоговым окном, но всю заботу о его создании и обработке берет на себя Windows. Но есть и обратная сторона подобной простоты создания ин формационного окна. Возможности программиста повлиять на внешний вид и со держимое подобного окна очень ограничены.

В приложении DlgDemo1 при выборе пункта меню About… будет вызываться настоящее модальное диалоговое окно, вид и поведение которого полностью оп ределяются программистом. В остальном приложение DlgDemo1 должно работать так же, как и приложение MenuDemo1.

Как обычно, сначала следует создать новый проект с именем DlgDemo1. Скопи руйте из папки проекта MenuDemo1 (см. листинг 6.1) в папку проекта DlgDemo1 файлы с расширениями .cpp, .h и .rc, скорректировав их имена заменой MenuDemo1 на DlgDemo1. Добавьте эти файлы в состав проекта.

Откройте в окне редактирования файл recource.h и замените в его тексте стро ку комментария

// Used by MenuDemo1.rc

следующей строкой:

// Used by DlgDemo1.rc

Модификацию программы начнем с определения шаблона диалогового окна.

Вызов и использование редактора диалоговых окон

В главном меню Visual Studio выполните команду Insert Resource. В появившем ся окне Insert Resource выберите тип ресурса Dialog и нажмите кнопку New. В ре зультате будет открыто окно редактора диалоговых окон с формой нового окна (рис. 7.1). Изначально в нем есть только кнопки OK и Cancel.

Рис. 7.1. Заготовка диалогового окна в окне редактора диалоговых окон

Также в окне приложения Visual Studio справа должна появиться панель ин струментов Controls (рис. 7.2). Эта панель содержит кнопки для создания элемен тов управления всех типов, которые можно добавлять в диалоговое окно.

310

 

 

 

 

 

 

 

 

Глава 7. Диалоговые окна

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 7.2. Панель инструментов Controls

Если по каким то причинам панель инструментов Controls не появится, то нужно щелкнуть правой кнопкой мыши на пустом месте окна Visual Studio и в открыв шемся контекстном меню выбрать пункт Controls.

Проектирование шаблона диалогового окна начинается с установки его свойств. Чтобы вызвать диалоговое окно Dialog Properties (рис. 7.3), нужно сделать двой ной щелчок левой кнопкой мыши на форме диалога. Это окно можно вызвать и другим способом, щелкнув на форме правой кнопкой мыши и выбрав во всплыв

шем контекстном меню пункт Properties.

Ðèñ. 7.3. Îêíî Dialog Properties

Введите в поле ID идентификатор IDD_ABOUT, а в поле Caption — текст About

DlgDemo1.

Кнопка Font…предназначена для вызова диалога, позволяющего выбрать шрифт, но сейчас можно оставить шрифт, используемый по умолчанию (MS Sans Serif, раз мер 8). Другие параметры диалогового окна тоже можно оставить в стандартном варианте. Если переключиться на вкладку Styles, то можно увидеть, что по умолча нию используются стиль Popup и тип рамки Dialog Frame, а также включены отметки флажков Title bar и System menu. После установки необходимых параметров окно свойств диалога нужно закрыть.

Теперь займемся «начинкой» диалогового окна. Мы хотели бы поместить ка кой нибудь рисунок слева на форме, затем отобразить необходимые информаци онные надписи, а в правом нижнем углу расположить кнопку OK.

С помощью мыши увеличьте размеры формы примерно в полтора раза. Удали те кнопку Cancel. Чтобы удалить элемент управления, достаточно выделить его мышью и нажать клавишу Delete.