Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Void CChildView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)




{

if(nChar==27)AfxGetMainWnd()->PostMessage(WM_CLOSE);

CWnd::OnChar(nChar, nRepCnt, nFlags);

}

Обратите внимание на то, что надо использовать именно PostMessage, а не SendMessage, и посылать сообщение WM_CLOSE а не WM_QUIT. Именно в этом случае будут корректно выполнены все деструкторы, как глобальные, так и локальные.

Если приложение находится в длительном цикле, то необходимо сначала выйти из этого цикла, а уже затем посылать сообщение WM_CLOSE. Сделать это можно так:

Ø объявить где-нибудь в доступном месте переменную bool Stop=false;

Ø в длительном цикле вызывать функцию ProcessMessages(), проверять значение переменной Stop и в случае «истина» выходить из цикла.

 

Теперь в каком-нибудь обработчике сообщения выполнить следующий код:

LRESULT CDZ_MFCView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)

{

if(Stop) AfxGetMainWnd()->PostMessage(WM_CLOSE);

Stop=(message==257)&(wParam==27);

return CView::WindowProc(message, wParam, lParam);

}

 

Обработка ошибок ввода

Когда в консольном приложении выполняется ввод числовых данных, то при вводе некорректных символов (например, букв вместо цифр) с помощью объекта cin пользователь никаких сообщений об ошибке не увидит, например:

int iNum=0;

cin>>iNum; /* пользователь вводит, например, символ А; никакой ошибки не

наблюдается*/

cout<<iNum; // выводится 0

 

Проконтролировать наличие ошибки ввода можно так:

int iNum=0;

while(1)

{

       cout<<Rus("Введи целое число>");

       cin>>iNum;

       if(cin.fail())

       {

             cout<<Rus("Ошибка в формате введенного числа.")<<endl;

             char s[128];

             cin.clear(); cin>>s;

       }

       else

       {

             cout<<Rus("Вам удалось ввести число - поздравляю!!! ");

             cout<<Rus("Число=")<<iNum<<endl;

             break;

       }

}

 



Интегрированная среда Microsoft Visual Studio 2005

Так как интегрированная среда Microsoft Visual Studio 2005 (ИС MVS-2005) имеет довольно большое число тем меню и всевозможных окон, значительной частью которых многие программисты могут и не пользоваться, я не буду стараться осветить «все и вся», а буду дополнять этот раздел теми сведениями, которые мне понадобились при составлении конспекта и лабораторных работ и вообще при изучении этой самой ИС.

Заметьте, что вид ИС (меню, окна) зависит от ее состояния: пока не открыт ни один проект – меню одно, после открытия какого-либо проекта – другое, после запуска приложения на выполнение – третье … То же относится и к окнам, которые можно открыть или показать.

Терминология

В справочной системе ИС MVS-2005 – MSDN – можно найти пояснения многих терминов через индексы «glossary» или «Glossary», по-нашему «словарь», «классификатор». Очень полезный раздел MSDN. Вот кое-что оттуда в моем переводе (с помощью Lingvo 12) и из других разделов MSDN. Большинство сведений можно получить из поиска по индексу (Index).

Solution (решение) и project (проект). ИС MVS-2005 реализует некоторые концептуальные контейнеры, называемые проектами (projects) и решениями (solutions). Проект обычно представляет собой приложение (application), динамически подключаемую библиотеку (DLL), сервис (service) и т.п. Проект размещается в отдельном каталоге и, часто, включает довольно большое число файлов. В каталоге проекта как правило создаются другие каталоги, например, Debug (содержит отладочную версию приложения) или Release (содержит окончательную, готовую к распространению версию приложения). Решение – это объединение нескольких проектов, концептуально объединенных для решения (извините за тавтологию) некоторой большой задачи. Чаще всего решение включает один проект.

Свойства решения и проекта

После создания или открытия какого-либо проекта становится доступной команда меню ProjectèProperties… Alt+F7 (рис. 1.). На рис.1. Use_ini_file_ANSI – это имя текущего открытого проекта.

 

 

 Рис. 1. Команда меню ProjectèProperties… Alt+F7

После выполнения этой команды появится окно, приведенное на рис. 2.

Рис. 2. Окно свойств проекта Use_ini_file_ANSI

 

В окне свойств проекта отображается масса полезной информации о проекте. Некоторые свойства проекта можно модифицировать. Советую обращать внимание на списки Configuration и Platform, особенно при открытии импортированных проектов, т.е. не своих. Например, для примеров приложений (samples), входящих в состав MSDN, установлена платформа Itanium, которая, скорее всего, Вам не подойдет.

В частности, из этого окна можно узнать и, при необходимости, изменить имена каталогов, в которых сохраняются исходные файлы проекта и производные. Например, после щелчка по кнопке с обозначением треугольника в строке для Output Directory и выбора в выпадающем списке <Edit …> появится окно, в котором в свою очередь можно щелкнуть по кнопке Makros>> и вызвать к жизни окно (рис. 3), в котором содержится много сведений о свойствах проекта.

Конечно, хотелось бы посоветовать очевидное: не изменяйте тех свойств проекта, в значениях которых Вы не уверены.

 

 Рис. 3. Окно с информацией об именах файлов и каталогов проекта

 

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 432.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...