KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Александр Фролов - Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2

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

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Александр Фролов, "Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2" бесплатно, без регистрации.
Перейти на страницу:

 Create(NULL, "Hello MFC", WS_OVERLAPPEDWINDOW, rectDefault, NULL);

}


//============================================================

// Метод OnCreate класса CBarWindow

// Вызывается во время создания окна приложения

//============================================================

int CBarWindow::OnCreate(LPCREATESTRUCT lpCreateStruct) {

 // Вызываем метод OnCreate базового класса

 if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1;


 // Создаем панель управления toolbar. В качестве

 // родительского окна указываем окно CBarWindow

 if (!m_wndToolBar.Create(this)) {

  // Ошибка при создании панели управления

  TRACE0("Failed to create toolbarn");

  return -1;

 }


 if (!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) {

  // Ошибка при загрузке ресурса панели управления

  TRACE0("Failed to load toolbarn");

  return -1;

 }


 return 0;

}

Теперь необходимо создать ресурс панели управления toolbar. Вы можете сделать это несколькими способами – создать панель управления “с нуля” или скопировать уже готовую панель управления из другого приложения, например из приложения Multi, представленного в главе “Многооконное приложение”.

Перед тем как приступить к разработке панели управления, создайте файл ресурсов и включите его в проект. Для этого выберите из меню File строку New. Из открывшейся диалоговой панели New выберите строку Resource Script и нажмите на кнопку OK. Будет создан пустой файл ресурсов. Сохраните его в каталоге приложения под именем Bar.rc и включите в проект.

Создание новой панели управления

Выберите из меню Insert строку Resource, а затем из открывшейся диалоговой панели Insert Resource выберите строку Toolbar и нажмите на кнопку OK.

Запустится редактор ресурсов и в нем будет загружена новая панель управления. Создайте панель управления, постепенно добавляя к ней по одной кнопке. Для каждой кнопки нарисуйте ее изображение, а также присвойте ей уникальный идентификатор и строку описания (см. раздел “Редактор панели управления”).

При создании панелей управления руководствуйтесь информацией из файла ресурсов приложения Bar (листинг 3.5) и изображениями кнопок панелей управления (рис. 3.9).

Панель управления приложения Bar должна иметь идентификатор IDR_MAINFRAME. В ней следует расположить девять кнопок с идентификаторами ID_FILE_NEW, ID_FILE_OPEN, ID_FILE_SAVE, ID_EDIT_CUT, ID_EDIT_COPY, ID_EDIT_PASTE, ID_FILE_PRINT, ID_APP_ABOUT и ID_TOOL_EXIT.

Между кнопками ID_FILE_SAVE и ID_EDIT_CUT, ID_EDIT_PASTE и ID_FILE_PRINT, вставьте разделители. Для каждой из кнопок вы также можете ввести их текстовые описания.

Сохраните измененный файл ресурсов.

Копирование панели управления

Чтобы ускорить процесс разработки панели управления приложения Bar, можно взять за основу панели управления ресурс toolbar приложения Multi, созданного с использованием средств MFC AppWizard. Мы описывали приложение Multi в разделе “Многооконное приложение”.

Не закрывая проект Bar и файл ресурсов Bar.rc, откройте файл ресурсов приложения Multi. Выберите панель управления toolbar и запишите ее в буфер clipboard. Затем вставьте эту панель в файл ресурсов приложения Bar – Bar.rc.

Оставьте название панели toolbar, изображения кнопок, их идентификаторы и текстовые описания без изменения. Добавьте в конце панели еще одну кнопку, и присвойте ей идентификатор IDTOOLEXIT. Введите текстовое описание кнопки – строку ExitnExit.

Сохраните измененный файл ресурсов приложения Bar и закройте файл ресурсов приложения Multi без изменений. Исходный текст файла ресурсов Bar.rc представлен в листинге 3.5.

Листинг 3.5. Файл Bar.rc

//Microsoft Developer Studio generated resource script.

//

#include "resource.h"


#define APSTUDIO_READONLY_SYMBOLS

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

//

// Generated from the TEXTINCLUDE 2 resource.

//

#include "afxres.h"


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

#undef APSTUDIO_READONLY_SYMBOLS


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

//

// Russian resources


#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)

#ifdef _WIN32

LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT

#pragma code_page(1251)

#endif //_WIN32


#ifdef APSTUDIO_INVOKED

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

//

// TEXTINCLUDE

//


1 TEXTINCLUDE DISCARDABLE

BEGIN

 "resource.h"

END


2 TEXTINCLUDE DISCARDABLE

BEGIN

 "#include ""afxres.h""rn"

 ""

END


3 TEXTINCLUDE DISCARDABLE

BEGIN

 "rn"

 ""

END


#endif    // APSTUDIO_INVOKED


#endif    // Russian resources

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


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

// English (U.S.) resources


#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)

#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 "ExitnExit"

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.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*