Имена и типы связанных переменных диалогового окна
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой
Идентификатор элемента управления Имя переменной Тип переменной
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

Дата: 2019-07-30, просмотров: 166.