Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том1)" -> 83

Visual С++ 6. Полное руководство: В 2 т.(том1) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том1) — Бином, 2006. — 569 c.
Скачать (прямая ссылка): vicualcc2006t1.djvu
Предыдущая << 1 .. 77 78 79 80 81 82 < 83 > 84 85 86 87 88 89 .. 204 >> Следующая

// Анализ командной строки с целью поиска // команд оболочки, DDE, открытия файла CCommandLinelnfо cmdlnfo; ParseCommandLine(cmdlnfo) ;
Затем вызывается функция ProcessShellCommand класса CWinApp для обработки командной строки.
// Выполнение команд, заданных в командной строке if (!ProcessShellCommand(cmdlnfo)) return FALSE;
Если командная строка содержит имя файла, то функция ProcessShellCommand попробует его открыть. Однако в программе WinGreet код для открытия файла реализован не полностью. Открытие файлов описано в гл. 12.
Как бы то ни было, при запуске программы WinGreet (например, посредством Developer Studio) командная строка чаще всего будет пустой. В этом случае функция ProcessShellCommand вызывает функцию OnFileNew класса CWinApp для создания нового пустого документа. При вызове функции OnFileNew программа использует шаблон документа для создания объектов типа cwinGreetDoc, CMainFrame, CWinGreetview, а также для связи с главным окном и окном представления. Ресурсы, используемые для главного окна (меню, значок и т.д.), определяются идентификатором ресурсов в шаблоне документа. Так как эти объекты и окна создаются внутри функции OnFileNew, в программе WinGreet нет явных определений объектов и вызовов функций для создания окон.
Примечание
Функция OnFileNew также вызывается каждый раз, когда пользователь выбирает команду New в меню File. Однако в SOI-приложениях эти вызовы не приводят к созданию новых программных объектов. Вместо этого используются объекты и окна, созданные при первом вызове функции OnFileNew.
Наконец, чтобы отобразить окно и его содержимое на экране, Initlnstance вызывает функции ShowWindow и Updatewindow объекта главного окна. Эти функции вызываются с помощью указателя на объект главного окна, сохраненного в переменной m_pMainWnd класса CWinGreetApp, наследуемой из класса CWinThread.
// Единственное окно приложения отображается и обновляется m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow();
Завершение функции Initlnstance
Функция Initlnstance вызывает CWinApp::Enable3dControlStatic (или Enable3dControl, если задан режим совместного доступа к MFC), чтобы Windows отображала различные элементы управления (например, флажки) в трехмерном представлении.
// Стандартная инициализация.
// Если вы не используете эти функции и хотите уменьшить
// размер исполняемого модуля, удалите ненужные
// команды, выполняющие специфическую инициализацию
#ifdef _AFXDLL
EnableSdControls(); // Вызывается при использовании MFC // в режиме совместного доступа
#else
EnableSdControlsStatic(); // Вызывается при статической
// компоновке библиотеки MFC
#er.dif
Дополнительную информацию об элементах управления смотрите в гл. 15.
Функция initlnstance также вызывает функцию SetRegistryKey класса CWinApp, что приводит к сохранению установок программы в системном реестре Windows (а не в файле .ini) и задает имя раздела, в котором они сохраняются.
// Измените раздел реестра, в котором будут сохранены установки. // Вы можете заменить эту строку более подходящим текстом, // например, названием вашей компании или организации
SetRegistryKey(_Т ("Local AppWizard-Generated Applications") ) ;
Чтобы задать другое имя раздела, в котором сохраняются установки программ (например, название вашей компании), измените строку, передаваемую в функцию SetRegistryKey. Заметьте: макрос _т преобразует строку в формат Unicod. В этом формате каждый символ представляется 16-битовым значением, что позволяет кодировать символы любого языка.
Основные установки, сохраненные в системном реестре, — это список последних открытых документов, отображаемых в меню File. Иногда его называют списком MRU (Most Recently Used — самые последние использовавшиеся). Функция initlnstance загружает этот список, как и установки программы, сохраненные в системном реестре, вызывая функцию CWinApp: : LoadStdProf ileSettings.
LoadStdProfileSettings(); // Загрузка стандартных установок
// INI-файла (включая список. // последних открытых файлов
При инициализации приложения функция Initlnstance является местом размещения соответствующего кода.
Исключения в библиотеке MFC
В гл. 8 рассматривалось использование механизма разрешения исключительных ситуаций для обработки ошибок программы, генерирующей исключения. Библиотека MFC полностью поддерживает стандартные исключения языка С++, и для работы с определенными типами ошибок MFC можно использовать методику, описанную в гл. 8. Например, при определенных условиях некоторые функции библиотеки MFC генерируют исключения, а не просто возвращают код ошибки. В документации по функциям MFC, которые могут выдавать исключения, описываются обстоятельства, при которых выдаются исключения, и тип формируемого объекта. Эту информацию можно использовать, чтобы написать соответствующий обработчик catch. Функции библиотеки MFC всегда выдают указатель на объект класса, порожденного от класса CException (например, классов CFileException и CMemoryException). Когда блок catch закончит работу с объектом исключения, обработчик вызовет функцию Delete объекта, чтобы правильно его удалить.
Предыдущая << 1 .. 77 78 79 80 81 82 < 83 > 84 85 86 87 88 89 .. 204 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100