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

учебное пособие. Часть1. Информатика

.pdf
Скачиваний:
42
Добавлен:
04.06.2015
Размер:
2.87 Mб
Скачать

CComboBox элементы управления, которые отображают список пунктов переменной длины.

CScrollBar горизонтальные и вертикальные полосы прокрутки.

CEdit элементы управления с одно- и многострочным редактиро- ванием текста.

Для каждого элемента создается свой класс, а значит, свои поля и свои методы. Этот список можно расширить за счет использования элементов

управления ActiveX.

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

Двоичные графические ресурсы, включающие пиктограммы, кур- соры и растровые изображения.

Текстовые структурные ресурсы, включающие диалоговые окна, меню, таблицы строк и таблицы акселераторов.

Двоичные ресурсы находятся в отдельных файлах, а текстовые хранят- ся в простом текстовом файле ASCII, который описывает структуру каждого элемента. Этот файл называется описанием ресурсов и обычно имеет то же имя, что и проект, но только с расширением rc.

13.8. Изменение пиктограммы приложения

Пиктограмма отображается в нескольких местах:

возле имени программы в Windows Explorer;

в названии окна приложения;

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

в диалоговом окне About.

По умолчанию пиктограмма для программ VC представляет собой три кубика с буквами MFC. Для изменения пиктограммы необходимо в Рабочем пространстве Project Workspace выбрать закладку ResourсeView. Открыть папку Icon и дважды щелкнуть на пункте IDR_MAINFRAME. От- крывается окно редактора BitMap Editor VC, который позволяет редак- тировать пиктограмму и предоставляет в распоряжение программиста раз- личные инструменты.

Следует заметить, что пиктограммы бывают разных размеров. Обычный размер 32х32 пикселя по- является на рабочем столе, когда пользователь выбирает большие значки. Когда пользователь выбирает мелкие значки, то размер иконок 16х16. Чтобы не создавать пиктограмму для каждого размера, необходимо удалить маленькую пиктограмму из файла. Для этого выбираем пункт Small(16x16) из раскрывающегося списка, затем команду Delete Device Image (удалить изображение устройства) из пункта главного

меню Image. После этого Windows, выполняя программу, не находит маленькую пиктограмму, она про-

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

311

13.9. Окно ABOUT

Программа Hello.exe включает в себя диалоговую панель About (информацию об авторе), по- скольку на шаге 2 MFC AppWizard в качестве одной из возможностей было окно About. Для доступа к диалоговой панели About программы Hello.exe, необходимо открыть системное меню, щелкнув на пик- тограмме в левом верхнем углу окна приложения. Выберите из системного меню About Hello. В ответ получаете диалоговую панель About Hello. Такая панель создается по умолчанию. Для изменения со- держимого панели закрываем приложение, в рабочем пространстве выбраем закладку ResourсeView, открываем папку Dialog, а в папке пункт IDD_ABOUTBOX. Теперь панель About доступна для редактиро- вания.

13.10. Проект «Окружность»

Этот проект демонстрирует использование таких элементов управления, как EditBox окно редак- тирования и StaticText.

Перед нами простейшая задача: по заданному радиусу определить площадь круга. Начнем с того, как будет выглядеть приложение после запуска программы (рис. 41).

Рис. 41.

Чтобы не выдавать детализированные пошаговые инструкции по разра- ботке визуальной части проекта, построим сводную таблицу (табл. 7) свойств используемых элементов управления [30].

312

 

 

Таблица 19

 

 

 

Объект

Свойство

Установка

 

 

 

1

2

3

 

 

 

Dialog Box

ID

IDD_CIRCLE1_DIALOG

(диалоговая панель)

 

 

 

 

 

 

Caption(заголовок)

Circle1

 

 

 

 

Font(шрифт)

System, Size 12 (страница General)

 

 

 

 

Флажок minimize

Отмечен (страница Styles)

 

 

 

 

Флажок maximize

Отмечен (страница Styles)

 

 

 

Group Box

ID

IDC_STATIC

(панель группы)

 

 

 

 

 

Static text

ID

IDC_STATIC

(статический текст)

 

 

 

 

 

 

Caption

R:

 

 

 

Static text

ID

IDC_STATIC

 

 

 

 

Caption

SQR:

 

 

 

Edit Box(окно

ID

IDC_RADIUS_EDIT

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

 

 

 

 

 

Edit Box

ID

IDC_SQR_EDIT

 

 

 

Check Box (флажок)

ID

IDC_VISIBLE_CHECK

 

 

 

 

Caption

&Visible

 

 

 

Check Box

ID

IDC_ENABLED_CHECK

 

 

 

313

 

 

Окончание табл. 7

 

 

 

1

2

3

 

Caption

&Enabled

 

 

 

Push Button

ID

IDC_EXIT_BUTTON

 

 

 

 

Caption

E&xit

 

 

 

Push Button

ID

IDC_SQR_BUTTON

 

 

 

 

Caption

& Sqr

 

 

 

 

Client edge

Отмечен (страница Extended)

 

 

 

 

Static edge

Отмечен (страница Extended)

 

 

 

 

Modal frame

Отмечен (страница Extended)

 

 

 

Значок амперсант & перед символом в заголовке означает, что этот символ на элементе управления подчеркивается, и пользователь может обращаться к элементу управления по горячим клавишам: ALT+

подчеркнутый символ.

3.Связывание переменных с окнами редактирования и флажками

4.Переменные, связанные с окнами редактирования и флажками, дают доступ к этим элементам управления.

Чтобы связать переменную с окном редактирования C_RADIUS_EDIT следует:

выбрать СдфыыЦшяфкв в меню Мшуцж

в появившейся диалоговой панели ClassWizard выбрать закладку Member Variables (переменные-элементы);

проверить в окне редактирования Class name установку класса (т. е. связываемая переменная будет элементом класса) CCircle1Dlg, который отвечает за диалоговую панель;

выбрать в списке объект IDC_RADIUS_EDIT;

щелкуть на кнопке Add Variable(добавить переменную);

в появившейся диалоговой панели Add Member Variable ввести в окна редактирования:

314

Member Variable name (имя переменной-элемента): m_Radius Category (категория): value

Variable type (тип переменной): float

щелкнуть на кнопке OK.

Аналогично связать переменную m_SQR типа double c окном редакти-

рования IDC_SQR_EDIT, m_VisibleCheck типа BOOL c флажком IDC_VISIBLE_CHECK и переменную m_EnabledCheck типа BOOL c флажком IDC_ENABLED_CHECK.

5.Код, инициализирующий флажки

Когда запускается программа, отметки флажков Visible и Enabled включены. Чтобы написать код, включающий флажки при запуске приложе- ния, необходимо:

выбрать СдфыыЦшяфкв в меню Мшуцж

в появившейся диалоговой панели ClassWizard выбрать закладку

Message Maps;

проверить в Class name установку класса CCircle1Dlg, который отвечает за диалоговую панель;

выбрать в списке объект CCircle1Dlg;

в окне Message выбрать WM_INITDIALOG это событие происхо- дит при инициализации диалоговой панели;

щелкнуть на кнопке Edit Code.

Теперь появляется возможность редактировать функцию OnInitDialog(), часть кода которой уже написана. Свой код добавляем

после строки с комментарием

//TODO и т.д. m_VisibleCheck = TRUE; m_EnabledCheck = TRUE; UpdateData ( FALSE );

Последняя функция обновляет экран, т. е. передает значения перемен- ных элементам управления.

После этого можно сохранить программу и запустить на выполнение.

Скнопкой Exit связываем уже известный код OnOK().

Скнопкой SQR связываем следующий код:

char strStr[10]; CString strStr1; UpdateData ( TRUE ); if ( m_Radius>0 )

{

m_Sqr = 3.14*m_Radius*m_Radius;

315

UpdateData ( FALSE );

}

else

{// Преобразование целого в строку itoa (m_Radius, strStr, 10);

strStr1 = "R = " + (CString)strStr + "\nВведите R –

положительным!";

MessageBox ( strStr1, "ERROR", MB_ICONINFORMATION);

}

В этом фрагменте программы используется strStr1 представитель класса CString. Класс CString служит для обработки строк. Здесь он ис- пользуется для сцепления строк:

strStr1="R="+(CString)strStr+"\nВведите R - положительным!";

Функция UpdateData()в зависимости от параметра обновляет экран или переменные:

UpdateData(TRUE) обновляет переменные, т. е. передает перемен- ным значения, считанные с соответствующих элементов управления.

UpdateData(FALSE) обновляет экран, т. е. передает элементам управления соответствующие значения переменных.

Связывание кода с событием BN_CLICKED флажка Visible

Cобытие BN_CLICKED флажка происходит каждый раз, когда вклю- чаете или отключаете его отметку. Для связывания кода с событием

BN_CLICKED флажка Visible необходимо:

выбрать СдфыыЦшяфкв в меню Мшуцж

в появившейся диалоговой панели ClassWizard выбрать закладку

Message Maps;

проверить в Class name установку класса CCircle1Dlg, который отвечает за диалоговую панель;

выбрать в списке объект IDC_VISIBLE_CHECK;

в окне Ьуыыфпу выбрать ИТ_СДШСЛУВ

щелкнуть на кнопке Edit Code.

Свой код добавляем после строки с комментарием

//TODO и т.д. UpdateData ( TRUE );

if ( m_VisibleCheck == TRUE )

GetDlgItem (IDC_RADIUS_EDIT) -> ShowWindow(SW_SHOW); else

GetDlgItem (IDC_ RADIUS _EDIT) ->ShowWindow(SW_HIDE);

Аналогично связываем код с флажком Enabled:

UpdateData(TRUE);

316

if ( m_EnabledCheck == TRUE )

GetDlgItem (IDC_ RADIUS _EDIT1) ->EnableWindow(TRUE); else

GetDlgItem (IDC_ RADIUS _EDIT1)->EnableWindow(FALSE);

Функция GetDlgItem() возвращает указатель на соответствующий элемент управления (окно редактирования). С помощью этого указателя вы- зывается функция соответствующего класса.

Программировать под Windows с использованием MFC гораздо легче и быстрее, чем только с функциями API. Но код программы получается бо- лее компактным и эффективным, если каркас программы создается с помо-

щью функций API.

317