Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Имена и типы связанных переменных диалогового окна




Идентификатор элемента управления Имя переменной Тип переменной
IDC_NAME m_strName CString
IDC_BIO m_strBio CString
IDC_SKILL m_strSkill CString
IDC_DEPT m_strDept CString
IDC_CAT m_bCat BOOL
IDC_RADIO2 задавать не нужно и невозможно
IDC_LIFE m_bLife BOOL
IDC_DIS m_bDis BOOL
IDC_MED m_bMed BOOL
IDC_EDUC m_strEduc CString
IDC_LANG m_nLang int
IDC_HARM m_nHarm int (Min=0, Max=100)
IDC_HYPO m_nHypo int (Min=0, Max=100)

 

Большинство взаимосвязей между типами элементов управления и типами переменных совершенно прозрачны. Однако уже не столь очевидно, как кнопки-переключатели (радио-кнопки) соотносятся с переменными. Если радио-кнопок в группе всего 2, как в нашем случае, то можно только для первой радио-кнопки ввести связанную переменную булевского типа и проверять ее значение: значение true означает выбор пользователем первой кнопки, а false – второй. Если кнопок несколько, то, проще всего, только с первой из них связать целочисленную переменную. Тогда при выборе первой кнопки значение этой переменной будет равно 0, второй – 1 и т.д. При этом для первой кнопки надо задать Group=True и Tabstop=True, а для всех остальных кнопок группы задать Group=False и Tabstop=True. Альтернативным способом получения состояния кнопок (причем любых кнопок, а не только радио-кнопок) является вызов их функций CButton::GetCheck(), но для этого надо иметь указатель на объект кнопка. Его можно получить с помощью функции CDialog::GetDlgItem(), но только в функциях класса диалога.

Для связанной переменной комбинированного списка «Язык» можно было бы выбрать тип CString или int. В первом случае переменная содержала бы название выбранного языка, а во втором (выбранном нами) она будет содержать номер выбранного языка в списке, причем значение для первого языка в списке – нулевое.

На этом этапе приложение должно компилироваться и выполняться, причем в диалоговом окне Вы можете вводить фамилию, биографию, выбирать вид оплаты, устанавливать и снимать флаги страховки, выбирать или вводить данные в комбинированный список «Профессиональные навыки», выбирать или вводить уровень образования, выбирать язык. В списке «Отдел» нет никаких данных и Вы их туда ввести не можете. Вы также можете двигать ползунки полос «Вредность» и «Лицемерие», но их положение пока не будет фиксироваться. Кроме того, любые выбираемые или вводимые Вами данные пока нигде не сохраняются. Надо что-то решать, не правда ли?

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

CDiaWinDlg::CDiaWinDlg(CWnd* pParent /*=NULL*/)

 

в файле CDiaWinDlg.cpp. Заметили, как там инициализируются связанные переменные? Также любопытно посмотреть на функцию CDiaWinDlg::DoDataExchange() в том же файле.

Шаг 7. Добавление переменных для доступа к классам управляющих элементов.

Каждому управляющему элементу, размещенному в диалоговом окне, соответствует свой MFC-класс и, когда при инициализации этот элемент создается, создается объект этого класса. Вместе с тем в программном коде, сгенерированном мастером ИС, этого объекта нет (в отличие от программы, разработанной в Delphi или Builder). Уже упоминаемая ранее функция CDialog::GetDlgItem() позволяет получить ссылку на класс управляющего элемента, но этот указатель временный, как подчеркивается в MSDN, и с его использованием часто возникают проблемы. В связи с изложенным проще всего, и в конечном счете удобнее, добавить в программу переменные, являющиеся именами экземпляров классов (объектов), связанных с управляющими элементами окна.

Для достижения этой благородной цели введем такие связанные переменные по аналогии с предыдущим шагом, но для каждой переменной надо выбирать Category=Control. и флажок Control Variable должен быть установлен. Перечень имен этих переменных приведен в табл. 3. Для добавления переменных-объектов надо, как и на предыдущем шаге, выполнить команду ProjectèAdd Variable, в списке Control ID выбрать идентификатор управляющего элемента и в поле Variable Name задать имя переменной. Не забывайте нажимать кнопку Finish после ввода каждой переменной.

Таблица 3




Поделиться с друзьями:


Дата добавления: 2014-12-26; Просмотров: 388; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.