- •СОЗДАНИЕ ЭЛЕМЕНТОВ УПРАВЛЕНИЯ
- •Использование стандартных элементов управления
- •Элемент
- •Название
- •Назначение
- •Объявление элемента управления в коде программы
- •АССОЦИИРОВАННЫЕ ПЕРЕМЕННЫЕ
- •Создание ассоциированных переменных
- •Объявление члена-переменной класса в коде программы
- •Функции обмена данными
- •Установка значения элемента управления по умолчанию
- •Общие свойства элементов управления
- •Static edge – устанавливает границу элемента управления.
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)
{
Выжол Ю.А.