Borland C++ 5 для себя


Глава 4. Возвращаемые значения. - часть 2


void T2000DlgClient::BNClickedOne() { // INSERT>> Your code here. if ( (MessageBox("Вы нажали на кнопку\nСпасибо Вам за это!", "Наше сообщение", MB_YESNO | MB_ICONINFORMATION) ) == IDYES) { MessageBox("А теперь Вы нажали\nна кнопку YES/ДА", "Наше второе сообщение", MB_ОК | MB_ICONWARNING); } else

{ MessageBox("А теперь Вы нажали\nна кнопку NO/НЕТ", "Наше второе сообщение", MB_ОК | MB_ICONSTOP); } }

Обратите внимание, что в нашем первом сообщении мы указали флаг MB_YESNO вместо MB_ОК - в результате мы получим окно сообщения с двумя кнопками - "ДА" и "НЕТ". Далее - в принципе, мы могли бы добавить в программу новую переменную, потом присваивать ей значение, возвращаемое функцией MessageBox - точно так же, как мы действуем с функцией "синус"; а потом мы сравнили бы эту переменную с IDYES и т.д. Но зачем нам лишние переменные? Мы сразу сравниваем функцию MessageBox (а точнее - значение, ею возвращаемое) с интересующим нас значением, а именно IDYES. Вот в этой части -

if ( (MessageBox(...) ) == IDYES)

и происходит сравнение. Знак "==" - это логический оператор "равно". Я сам до сих пор, когда пишу программы, путаю его с оператором присвоения - одиночным знаком "=". Ошибка страшная - поскольку с точки зрения языка это все допустимо - и компилляция не выдает ошибки - а программа работает не так, как задумано.

Но вернемся к нашей программе. Уточним теперь синтаксис оператора "если":

if ( условие ) { действие, выполняемое, если условие истинно } else

{ действие, выполняемое, если условие ложно }

Второй части может и не быть, т.е. оператор может выглядеть следующим образом:

if ( условие ) { действие, выполняемое, если условие истинно }

Это пишется в случае, когда мы делаем что-то лишь в случае истинности условия, а в случае невыполнения условия мы не делаем никаких действий.

В нашем примере программа будет работать следующим образом: Дойдя до строки с оператором "если", она полезет внутрь - к условию сравнения. Там она выяснит, что в одной из частей, подлежащих сравнению, должно стоять значение, возвращаемое функцией MessageBox. Программе "придется" вызвать эту функцию, в результате чего мы увидим на экране наше сообщение с двумя кнопками - см.рис.4.1.




- Начало -  - Назад -  - Вперед -