Litvek - онлайн библиотека >> Григорий Вячеславович Фролов и др. >> C, C++, C# и др. >> Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2 >> страница 3
src="/icl/i/62/114562/image001.png" alt="Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2. Иллюстрация № 1"> Рис. 1.1. Приложение Multi


Теперь рассмотрим внимательно сам проект Multi, подготовленный для нас MFC AppWizard. Найдите окно Project Workspace и откройте страницу FileView. Вы увидите список всех исходных файлов, входящих в проект (рис. 1.2). В отдельную папку Dependencies будут помещены названия вспомогательных файлов проекта. Эти файлы не входят в проект непосредственно, но используются либо для хранения ресурсов, либо как включаемые файлы, указанные директивой #include в одном или нескольких основных файлах проекта.

Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2. Иллюстрация № 2 Рис. 1.2. Окно Project Workspace, файлы проекта


В следующей таблице кратко описаны основные файлы проекта Multi. Ниже мы подробно рассмотрим ресурсы приложения Multi, а также опишем составляющие его классы и их методы.

Имя файла Описание ChildFrm.cpp Файл содержит определение методов класса CChildFrame ChildFrm.h В файле находится определение класса дочернего окна MDI – CChildFrame MainFrm.cpp Файл содержит определения методов класса CMainFrame MainFrm.h Содержит описание класса главного окна приложения, который называется CMainFrame. Класс CMainFrame наследуется от базового класса CFrameWnd, определенного в библиотеке классов MFC Multi.cpp Основной файл приложения. В нем определены методы основного класса приложения CMultiApp Multi.h В этом файле перечислены другие включаемые файлы и описан главный класс приложения CMultiApp Multi.pch Файл создается во время первой трансляции программы, если вы используете предварительную компиляцию включаемых файлов Multi.rc Файл ресурсов. В этом файле описаны все ресурсы приложения. Сами ресурсы могут быть записаны в каталоге RES, расположенном в главном каталоге проекта MultiDoc.cpp Включает определение методов класса CMultiDoc MultiDoc.h Содержит определение класса документов приложения – CMultiDoc MultiView.cpp Включает определение методов класса CMultiView MultiView.h Содержит описание класса окна просмотра приложения – CMultiView ReadMe.txt Текстовый файл, содержащий описание проекта. В нем кратко рассмотрен каждый файл, входящий в проект, перечислены классы приложения, а также представлена некоторая другая дополнительная информация res\Multi.ico Пиктограмма приложения res\Multi.rc2 В этом файле определены ресурсы, которые нельзя редактировать с помощью редактора ресурсов среды Visual C++ res\MultiDoc.ico Пиктограмма для документов приложения res\Toolbar.bmp Файл содержит растровое изображение кнопок панели управления Resource.h Файл содержит определения идентификаторов ресурсов приложения, например, идентификаторы строк меню StdAfx.h, StdAfx.cpp Использование этих файлов позволяет ускорить процесс повторного построения проекта. Более подробное описание файлов представлено ниже

Ресурсы приложения

Рассмотрим ресурсы, которые MFC AppWizard создал для нашего приложения. Откройте страницу RecourceView в окне проекта Project Workspace. В нем отображается полный список всех ресурсов приложения (рис. 1.3).

Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2. Иллюстрация № 3 Рис. 1.3. Окно Project Workspace, ресурсы приложения


Сравните эти ресурсы с ресурсами приложения с однооконным интерфейсом (том 24 серии “Библиотека системного программиста”). Вы заметите, что в состав приложения с многооконным интерфейсом входит больше ресурсов. Так, например, для многооконного приложения определены два меню, две пиктограммы, больше размер таблицы текстовых строк.

Национальные ресурсы
Обратите внимание, что все ресурсы, представленные на странице RecourceView в окне проекта Project Workspace, английские. К сожалению, MFC AppWizard из доступных нам версий Microsoft Visual C++ не позволяет выбрать для создаваемого приложения русские ресурсы (язык для ресурсов выбирается в первой панели MFC AppWizard – Step 1, во время определения свойств приложения). Поэтому для приложения Multi и всех других приложений, созданных с помощью MFC AppWizard, мы выбрали английский язык.

Если вы в Control Panel с помощью приложения Regional Settings выбрали русский язык, то в некоторых случаях ClassWizard может работать неправильно. Например, если вы добавите к английской диалоговой панели новые органы управления, то ClassWizard не позволит автоматически привязать к ним переменные. Возникнут также сложности при использовании русского текста в строковых ресурсах, помеченных как английские. Чтобы избежать этих проблем, измените язык, используемый для ресурсов. Для этого достаточно в окне Project Workspace щелкнуть по идентификатору ресурса правой кнопкой мыши и выбрать из открывшегося контекстного меню строку Properties. На экране появится диалоговая панель со свойствами выбранного ресурса. Измените в ней язык ресурса, выбрав из списка Language строку Russian.

Шаблон меню
Для многооконного приложения в ресурсах проекта определены два меню с идентификаторами IDR_MAINFRAME и IDR_MULTITYPE. Приложение использует одно из этих меню, в зависимости от того, открыт документ или нет.

Меню с идентификатором IDR_MAINFRAME используется, если в приложении не открыт ни один документ. Как видите, идентификатор меню совпадает с идентификатором меню приложения с однооконным интерфейсом, однако строки этих меню различаются:

//////////////////////////////////////////////////////////////// Меню IDR_MAINFRAME

IDR_MAINFRAME MENU PRELOAD DISCARDABLE

BEGIN

 POPUP "&File"

 BEGIN

  MENUITEM "&New\tCtrl+N",    ID_FILE_NEW

  MENUITEM "&Open...\tCtrl+O",ID_FILE_OPEN

  MENUITEM SEPARATOR

  MENUITEM "P&rint Setup...", ID_FILE_PRINT_SETUP

  MENUITEM SEPARATOR

  MENUITEM "Recent File",     ID_FILE_MRU_FILE1, GRAYED

  MENUITEM SEPARATOR

 MENUITEM "E&xit",            ID_APP_EXIT

 END

 POPUP "&View"

 BEGIN

  MENUITEM "&Toolbar",        ID_VIEW_TOOLBAR

  MENUITEM "&Status Bar",     ID_VIEW_STATUS_BAR

 END

 POPUP "&Help"

 BEGIN

  MENUITEM "&About Multi...", ID_APP_ABOUT

 END

END

Меню, имеющее идентификатор IDR_MULTITYPE, отображается, когда пользователь создает новый документ или открывает документ, уже записанный в файле на диске.

Как видите, в этом меню определено временное меню Window, строки которого служат для управления MDI окнами приложения:

//////////////////////////////////////////////////////////////// Меню IDR_MAINFRAME

IDR_MAINFRAME MENU PRELOAD DISCARDABLE

BEGIN

 POPUP "&File"

 BEGIN

  MENUITEM "&New\tCtrl+N",     ID_FILE_NEW

  MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN

  MENUITEM SEPARATOR

  MENUITEM "P&rint Setup...",  ID_FILE_PRINT_SETUP

  MENUITEM SEPARATOR

  MENUITEM "Recent File",      ID_FILE_MRU_FILE1, GRAYED

  MENUITEM