Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Связывание кода со средствами пользовательского интерфейса




 

1) Свяжем команды меню и кнопки на панели инструментов с программным кодом. Для этого откроем View à ClassWizard… Message Maps, Class name: CMotorView и в списке Object IDs, выберем идентификаторы, которые мы задали нашим командам меню и кнопкам. Далее в списке Messages выберите COMMAND, и нажмите Add Function… Введите имя функции. Она и будет выполняться при нажатии соответствующей клавиши на панеле инструментов или команде меню.

2) Присваивив каждой кнопке функцию, получаем:

void CMotorView::OnInitial()

{

// TODO: Add your command handler code here

 

}

 

void CMotorView::OnPrevious()

{

// TODO: Add your command handler code here

 

}

 

void CMotorView::OnNext()

{

// TODO: Add your command handler code here

 

}

 

void CMotorView::OnParameters()

{

// TODO: Add your command handler code here

 

}

3) Функция OnInitial() будет рисовать начальное положение механизма (угол ):

void CMotorView::OnInitial()

{

// TODO: Add your command handler code here

à a = 0;

à Background();

à LeadOutParameters();

à DRAW();

}

4) Функция OnPrevious() будет рисовать следующее положение механизма при повороте кривошипа против часовой стрелки, а функция OnNext по часовой стрелке. Зададим угол поворота :

void CMotorView::OnPrevious()

{

// TODO: Add your command handler code here

à if (a==2*PI) a = 0;

à a += 15 * PI/180;

à Background();

à LeadOutParameters();

à DRAW();

}

 

void CMotorView::OnNext()

{

// TODO: Add your command handler code here

à if (a==2*PI) a = 0;

à a -= 15 * PI/180;

à Background();

à LeadOutParameters();

à DRAW();

}

Рис. 3.8.1. Вид диалогового окна «Parameters»

3.8. Создание диалогового окна «Parameters»

1) В оконце Workspace выбираем вкладку ResourceView, нажимаем правой кнопкой мыши на каталоге Dialog, и выбираем Insert Dialog. Появляется чистое диалоговое окно с двумя кнопками OK и Cancel.

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

3) Зададим всем полям для ввода чисел следующие идентификаторы: IDC_EDIT_AB, IDC_EDIT_BC, IDC_EDIT_BD, IDC_EDIT_DE, IDC_EDIT_N, IDC_EDIT_CBD. Кнопке «Исходные данные» зададим идентификатор: IDC_BUTTON_DATA.

4) Далее откроем View à ClassWizard… Member Variables, Class name: DlgParameters и, выбрав в списке Control IDs идентификатор поля, нажмите Add Variable… и задайте следующие переменные:

Control IDs: Type Member
IDC_EDIT_AB int m_AB
IDC_EDIT_BC int m_BC
IDC_EDIT_BD int m_BD
IDC_EDIT_DE int m_DE
IDC_EDIT_N int m_N
IDC_EDIT_CBD double m_CBD

5) Далее откроем View à ClassWizard… Message Maps, Class name: DlgParameters и в списке Object IDs, выберем идентификатор IDC_BUTTON_DATA, в списке Messages выберем BN_CLICKED, и нажмем Add Function… Введем имя функции, и нажмем Edit Code. Мы перейдем сразу к новосозданной функции и pgbitv в нее следующий код:

void DlgParameters::OnButtonData()

{

// TODO: Add your control notification handler code here

à UpdateData(true);

à m_AB = 6;

à m_BC = 35;

à BD = 3;

à E = 32;

à N = 1;

à CBD = 75.;

à dateData(false);

}

Теперь при нажатии кнопки «Исходные данные», все поля заполняться моими исходными данными.

6) Чтобы при вызове диалогового окна в полях сразу появлялись нужные значения, откроем файл DlgParameters.cpp и изменим код:

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

: CDialog(DlgParameters::IDD, pParent)

{

//{{AFX_DATA_INIT(DlgParameters)

à m_AB = 6;

à m_BC = 35;

à m_BD = 3;

à m_CBD = 75.0;

à m_DE = 32;

à m_N = 1;

//}}AFX_DATA_INIT

}

 





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


Дата добавления: 2016-11-18; Мы поможем в написании ваших работ!; просмотров: 313 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Люди избавились бы от половины своих неприятностей, если бы договорились о значении слов. © Рене Декарт
==> читать все изречения...

2505 - | 2304 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.