Добавить в цитаты Настройки чтения

Страница 132 из 150

Сейчас мы свяжем элементы управления с событиями. У нас всего два элемента — это две кнопки: Say Hello и Exit.

Теперь мы будем пользоваться еще одним мастером ClassWizard, он сильно облегчит нам работу. Зайдите в VIEW->ClassWizard, появится такая диалоговая панель

Рассмотрим эту панель.

1) Project — здесь вы выбираете свой проект.

2) ClassName — название класса, элементы которого вы будете связывать с событиями, проверьте, чтобы там было установлено CHelloDIg — это класс, который связан с главным диалоговым окном.

3) Object IDs — это идентификаторы(названия) элементов управления, в нашем случае это две кнопки. Первый идентификатор — это название самого класса, оно туда включено, так как с ним связаны многие события(это такие значения, которые возвращаются Windows, при совершении какого-нибудь действия).

4) Messages — а это как раз те самые события, которые генерирует программа. К примеру, если вы нажали на кнопку, то генерируется событие BN_CLICKED, а если два раза — то BN_DOUBLECLICKED.

5) Members function — это список функций, которые вы включили, и соответствующие им события.

Теперь свяжем кнопку EXIT с событием BN_CLICKED — оно возникает при нажатие на кнопку. Для этого щелкнем в Object IDs на IDC_EXIT_BUTTON, справа появится события, с которыми можно связать эту кнопку. Выбираем там BN_CLICKED. И щелкаем на кнопке Add Function, которая находится справа. Этим нажатием вы говорите Visual C++, что вам необходимо связать это событие с функцией. Выведетя такая диалоговая панель, где вам предложат выбрать название функции. Оставьте все по умолчанию и нажмите кнопку ОК.

В Members function появилась запись о том, что мы связали кнопку (с идентификатором IDC_EXIT_BUTTON) с функцией OnExitButton. Теперь щелкаем по кнопке Edit Code, которая находится ниже кнопки Add Fucnction. При нажатии на эту кнопку мы переходим в режим редактирования исходного текста. В окошке появится тест:

void CHelloDlg::OnExitButton()

{

// TODO: Add your control notification handier code here

}

Комментарий // TODO: Add your control notification handler code here говорит, что после него можно выставлять свой код.

Начало вашего кода будет обозначаться

///Здесь начинается ваш код///

А конец вашего кода —

///Здесь заканчивается ваш код///

Теперь введем код, для этого вам надо переписать его

void CHeiioDlg::OnExitButton()

{

// TODO: Add your control notification handier code here

///Здесь начинается ваш код///

ОnОК();

///Здесь заканчивается ваш код///

}

Вы написали ОnОК();, эта функция будет выполняться при каждом нажатии на кнопку EXIT, и она предназначена для завершения программы. Проверьте, чтобы в написании OnOK, ОК было написано с большой буквы, иначе, при компиляции программы, Visual C++ сообщит вам об ошибке, так символы верхнего и нижнего регистра в VC имеют распознаются по-разному. Итак вы связали кнопку EXIT с событием BN_CLICKED, а его с функцией OnExitButton, которая будет выполняться при каждом нажатии на кнопку EXIT.

Теперь свяжем кнопку Say Hello с событием BN_CLICKED. Для этого зайдем в меню VIEW->ClassWizard.

Выберем в Object IDs IDC_SAYHELLO_BUTTON

Щелкнем на BN_CLICKED в Messages (этим вы связываете кнопку Say Hello с событием BN_CLICKED).

Нажимаем на Add function, этим вы связываете событие BN_CLICKED с функцией.

В раскрывшемся окне оставляем все по умолчанию и нажимаем кнопку ОК.

Затем нажимаем на кнопку Edit Code, для редактирование исходного текста.

И в раскрывшемся окне пишем следующий код:

void CHelloDIg::OnSayhelloButton()

{





// TODO: Add your control notification handler code here

///Здесь начинается ваш код///

MessageBox("Say Hello ");

///Здесь заканчивается ваш код///

}

Функция MessageBox("Say Hello"); вызывает окно сообщений, в котором написан текст Say Hello, который и является параметром этой функции.

Итак, вы связали кнопки Say Hello и EXIT с событием BN_CLICKED. При нажатии на кнопку Exit программа завершается, а при нажатии на кнопку Say Hello выводится сообщение "Say Hello".

Теперь вам осталось построить и выполнить программу. Нажимаем Далее…

Компиляция и запуск программы

Построение и выполнение программы

Для того, чтобы выполнить программу надо ее вначале сохранить. Зайдите в меню File и там нажмите на Save Аll. Затем надо ее построить(скомпилировать).

Зайдем в меню Build->Build Hello.ехе, начнется построение программы. Если компилятор не выдал сообщение об ошибке, которые можно посмотреть в появившемся внизу окошке, то можно смело запускать программу.

Теперь вам осталось только выполнить программу, для этого зайдите в меню Build->Execute Hello.exe

Ваша программа должна будет выглядеть так:

А окно сообщений при нажатии на кнопку Say Hello:

Резюме

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

А теперь вашему вниманию предлагается выполнить упражнение для закрепления пройденного материала.

Упражнение к Уроку

Упражнение

Сейчас вы выполните упражнение. Вам необходимо вставить еще одну кнопку с названием Веер с идентификатором IDC_BEEP_BUTTON, при нажатии на которую компьютер подает сигнал через динамик компьютера.

Функция для подачи сигнала — MessageBeep((WORD)-2);.

Окно вашей программы должно будет выглядеть так:

Ответ к упражнению

Щелкнем на закладку Resource View, раскроем меню Hello Resource, там откроем Dialog и щелкнем мышкой два раза на IDD_HELLO_DIALOG. Откроется окно проектирования.

Вставим туда еще одну кнопку с идентификатором IDC_BEEP_BUTTON и надписью (Сарtion) — Веер.

Заходим в меню View->ClassWizard, выбираем в Object IDs IDC_BEEP_BUTTON, в Messages щелкаем на BN_CLICKED и нажимаем на Add Function, там оставляем все по умолчанию и жмем ОК, затем нажимаем на кнопку Edit Code. И вводим такой текст:

void CHelloDlg::OnBeepButton()

{

// TODO: Add your control notification handler code here

///Мой код начинается здесь///

The Hello Program

MessageBeep((WORD)-2);

///Мой код заканчивается здесь///

}