Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VC Лекции PDF / VC 03 Лек Элементы управления.pdf
Скачиваний:
40
Добавлен:
15.02.2015
Размер:
337.17 Кб
Скачать

Visual C++

Лекция 3

3

Обратите внимание, что AppWizard не сформировал строк, которые объявляют добавленные в форму надписи (StaticText), а также на то, что все надписи в форме имеют одно и тоже имя – IDC_STATIC. Указанная особенность работы связана с тем обстоятельством, что свойства и содержимое надписи в форме очень редко изменяется в ходе выполнения программы. Для того, чтобы иметь возможность манипулировать с надписью, её необходимо объявить в заголовочном файле, добавив строку, например:

#define IDC_NAME

1007

Добавление идентификатора ресурса можно также выполнить помощью диалогового окна Resource Symbols. Для этого:

выберите команду меню View Resource Symbols…;

вдиалоговом окне Resource Symbols нажмите кнопку New…;

вдиалоговом окне New Symbols введите имя идентификатора в поле Name, например

IDC_NAME;

вполе Value введите номер идентификатора, например 1007;

нажмите кнопку ОК.

При удалении элемента управления из формы, как правило, из файла Resource.h удаляется и строка кода, которая этот элемент управления объявляет.

АССОЦИИРОВАННЫЕ ПЕРЕМЕННЫЕ

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

Создание ассоциированных переменных

Для этого нужно в меню View или контекстном меню выбрать команду ClassWizard. В открывшемся диалоговом окне MFC ClassWizard откройте вкладку Member Variables.

Выжол Ю.А.

Visual C++

Лекция 3

4

Вкладка Member Variables позволяет легко установить соответствие между текстом программы и ресурсами окна. Щелкните в строке c именем элемента управления, а затем на кнопке Add Variables. Это приведет к появлению на экране диалогового окна Add Member Variables.

Выберите в списке Category категорию переменной. Член-переменная класса нового диалогового окна соответствует либо значению (Value), которое есть

содержимое элемента управления, либо самому элементу как программному объекту (Control).

Вполе Member variable name введите имя переменной. Для имён переменных категории Value рекомендуется использовать префикс m_, категории Control – префикс c_,

Всписке Variable type выберите тип переменной. Ниже перечислены типы переменных, которые могут быть ассоциированы

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

текстовые поля – строковый или числовой тип ; флажки – bool;

переключатели, полоса прокрутки – int ;

список икомбинированный список – строковый тип.

После того как вы щелкнете на кнопке ОК и тем самым добавите переменную в список членов класса, ClassWizard предложит установить некоторые параметры, которые могут быть использованы для проверки достоверности ввода данных. Если речь идет о переменной строкового типа, связанной с текстовым полем, ClassWizard предлагает в поле Maximum Characters (Максимум символов) установить максимальную длину вводимой строки. Если же текстовое поле ассоциировано с переменной числового типа, то ClassWizard предлагает установить верхний и нижний предел вводимого пользователем значения.

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

Объявление члена-переменной класса в коде программы

Давайте проследим за тем, какие изменения в коде программы сделал ClassWizard после добавления члена-переменной класса. С этойцелью:

в окне Workspace откройте вкладку ClassView; откройте файл заголовка класса диалогового окна.

Текст файла заголовка класса, который сформировал ClassWizard, будет содержать объявление переменных-членов класса и иметь примерно следующий вид:

class CPressDlg : public CDialog

 

{

 

 

 

public:

 

 

 

CPressDlg(CWnd* pParent = NULL);

// standard constructor

// Dialog Data

 

 

 

enum { IDD = IDD_PRESS_DIALOG };

 

CStatic

c_FileName;

// объявление члена переменной класса c_FileName

CString

m_FileMame;

// объявление члена переменной класса m_FileMame

BYTE

m_M;

// объявление члена переменной класса m_M

BOOL

m_check;

// объявление члена переменной класса m_check

int

m_radio;

// объявление члена переменной класса m_radio

Функции обмена данными

Давайте проследим за тем, какие изменения в коде программы сделал ClassWizard после добавления члена-переменной класса. С этойцелью:

в окне Workspace откройте вкладку ClassView;

откройте класс диалогового окна и выберите метод DoDataExchange.

Метод DoDataExchange вызывается при нажатии кнопки ОК и осуществляет обмен данными между элементами управления и ассоциированными с ними членами-переменными класса. Текст метода DoDataExchange, который сформировал ClassWizard, будет иметь примерно следующий вид:

void CPressDlg::DoDataExchange(CDataExchange* pDX)

{

Выжол Ю.А.