Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
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; просмотров: 480. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |