Чтение онлайн

ЖАНРЫ

Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2

Фролов Григорий Вячеславович

Шрифт:

#ifdef _WIN32

LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

#pragma code_page(1252)

#endif //_WIN32

//////////////////////////////////////////////////////////////

//

// Toolbar

//

IDR_MAINFRAME TOOLBAR DISCARDABLE 16, 15

BEGIN

 BUTTON ID_FILE_NEW

 BUTTON ID_FILE_OPEN

 BUTTON ID_FILE_SAVE

 SEPARATOR

 BUTTON ID_EDIT_CUT

 BUTTON ID_EDIT_COPY

 BUTTON ID_EDIT_PASTE

 SEPARATOR

 BUTTON ID_FILE_PRINT

 BUTTON ID_APP_ABOUT

 BUTTON ID_TOOL_EXIT

END

//////////////////////////////////////////////////////////////

//

// Bitmap

//

IDR_MAINFRAME BITMAP MOVEABLE PURE "res\\Toolbar.bmp"

//////////////////////////////////////////////////////////////

//

// String Table

//

STRINGTABLE DISCARDABLE

BEGIN

 ID_TOOL_EXIT "Exit\nExit"

END

#endif // English (U.S.) resources

//////////////////////////////////////////////////////////////

#ifndef APSTUDIO_INVOKED

//////////////////////////////////////////////////////////////

// Generated from the TEXTINCLUDE 3 resource.

//

//////////////////////////////////////////////////////////////

#endif // not APSTUDIO_INVOKED

Идентификаторы

всех ресурсов приложения Bar определены в файле resource.h. Этот файл создается автоматически редактором ресурсов Microsoft Visual C++ (листинг 3.6).

Листинг 3.6. Файл resource.h

//{{NO_DEPENDENCIES}}

// Microsoft Developer Studio generated include file.

// Used by Bar.rc

//

#define IDR_HAND_BAR 101

#define IDR_MAINFRAME 128

#define ID_TOOL_EXIT 32771

#define ID_BUTTON40001 40001

#define ID_BUTTON40002 40002

#define ID_BUTTON40003 40003

#define ID_BUTTON40004 40004

#define ID_BUTTON40005 40005

#define ID_FILE_NEW 0xE100

#define ID_FILE_OPEN 0xE101

#define ID_FILE_SAVE 0xE103

#define ID_FILE_PRINT 0xE107

#define ID_EDIT_COPY 0xE122

#define ID_EDIT_CUT 0xE123

#define ID_EDIT_PASTE 0xE125

#define ID_APP_ABOUT 0xE140

// Next default values for new objects

//

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NEXT_RESOURCE_VALUE 103

#define _APS_NEXT_COMMAND_VALUE 40006

#define _APS_NEXT_CONTROL_VALUE 1000

#define _APS_NEXT_SYMED_VALUE 101

#endif

#endif

Изображения

кнопок панели управления IDR_MAINFRAME располагаются в файле Toolbar.bmp (рис. 3.11). Файл Toolbar.bmp содержит только изображения кнопок, разделители SEPARATOR в нем не представлены.

Рис. 3.11. Файл Toolbar.bmp с изображением кнопок панели управления

Постройте приложение Bar и запустите его на выполнение. На экране появится главное окно приложения, содержащее панель управления (рис. 3.12). Панель управления нельзя переместить в другое место, она жестко зафиксирована в верхней части окна.

Рис. 3.12. Приложение Bar

Все кнопки, кроме трех, недоступны и отображаются серым цветом.

При нажатии на первые две доступные кнопки из панели управления на экране появляется сообщение о том, что данная команда недоступна. Если вы нажмете на последнюю кнопку в панели управления, то приложение завершит свою работу.

Как устроено приложение CBarApp

Обратите внимание на первые строки файла Bar.cpp. Они содержат директивы #include, которые включают в исходный текст два файла – afxwin.h и afxext.h:

// Включаемый файл для MFC

#include <afxwin.h>

#include <afxext.h>

// Включаемый файл для ресурсов приложения

#include "resource.h"

С файлом afxwin.h вы уже знакомы. В этом файле определены классы, методы, константы и другие структуры для библиотеки классов MFC. Кроме того, файл afxwin.h автоматически подключает другой включаемый файл – windows.h.

Файл afxext.h необходим, так как в нем описываются классы, используемые для создания панели управления, в том числе сам класс панели управления – CToolBar.

Кроме системных файлов afxwin.h и afxext.h, в исходный текст файла Bar.cpp включен файл resource.h. Этот файл создается автоматически редактором ресурсов Microsoft Visual C++ и содержит определение различных идентификаторов приложения.

В приложении Bar определены два класса CBarApp и CBarWindow. Главный класс приложения CBarApp наследуется от базового класса CWinApp. Объект MyBarApp класса CBarApp объявлен как глобальный и создается сразу после запуска приложения.

В класс CBarApp входит единственный метод InitInstance. Метод InitInstance создает главное окно приложения, представленное классом CBarWindow, наследованным от класса CFrameWnd.

Поделиться с друзьями: