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

 #ifndef APSTUDIO_READONLY_SYMBOLS

  #define _APS_NEXT_RESOURCE_VALUE 102

  #define _APS_NEXT_COMMAND_VALUE  40003

  #define _APS_NEXT_CONTROL_VALUE  1000

  #define _APS_NEXT_SYMED_VALUE    101

 #endif

#endif

В листинге 2.9 мы привели файл ресурсов MFMenuRes.rc приложения. Этот файл был подготовлен редактором ресурсов Visual C++. Одна из первых строк файла содержит директиву #include которой подключается файл MFMenuRes.h, содержащий описание идентификаторов ресурсов (листинг 2.8).

Среди прочих служебных строк, необходимых редактору ресурсов и компилятору Visual C++, вы можете обнаружить описание меню приложения IDR_MENU. Для первого приложения, использующего ресурсы мы привели файл ресурсов полностью. Впоследствии мы ограничимся словесным описанием ресурсов и будем приводить только выдержки из файла ресурсов.

Листинг 2.9. Файл MFMenuRes.rc

// Файл описания ресурсов приложения, созданный

// Microsoft Developer Studio

#include "MFMenuRes.h"


#define APSTUDIO_READONLY_SYMBOLS

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

// Включаем файл afxres.h, содержащий определения стандартных

// идентификаторов

#include "afxres.h"


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

#undef APSTUDIO_READONLY_SYMBOLS


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

// Руссификацированные ресурсы

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

 #ifdef _WIN32

  LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT

 #pragma code_page(1251)

 #endif //_WIN32


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

 // Меню

 //

 IDR_MENU MENU DISCARDABLE

 BEGIN

  POPUP "Test"

  BEGIN

   MENUITEM "Beep", ID_TEST_BEEP

   MENUITEM SEPARATOR

   MENUITEM "Exit", ID_TEST_EXIT

  END

 END


 #ifdef APSTUDIO_INVOKED


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

  // Ресурсы TEXTINCLUDE

  //

  1 TEXTINCLUDE DISCARDABLE

  BEGIN

   "MFMenuRes.h\0"

  END


  2 TEXTINCLUDE DISCARDABLE

  BEGIN

   "#include ""afxres.h""\r\n"

   "\0"

  END


  3 TEXTINCLUDE DISCARDABLE

  BEGIN

   "\r\n"

   "\0"

  END


 #endif // APSTUDIO_INVOKED


#endif // Руссификацированные ресурсы


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

#ifndef APSTUDIO_INVOKED

#endif


Когда вы создадите ресурсы приложения и включите файл ресурсов в проект обратите внимание на окно Project Workspace. В нем появится еще одна, четвертая страница ResourceView (рис. 2.24). Эта страница показывает все ресурсы, входящие в проект. В приложении MFMenu определен только один ресурс – меню, имеющее идентификатор IDR_MENU.

Вы можете быстро перейти к редактированию меню, если выберите его идентификатор и щелкните два раза левой кнопкой мыши.

Рис. 2.24. Страница ResourceView окна Project Workspace


Теперь проект готов. Вы можете построить его и запустить полученное приложение MFMenu. Внешний вид приложения представлен на рисунке 2.25. Как видите окно приложения имеет меню Test, состоящее из двух строк – Beep и Exit.

Если вы выберите строку Beep из меню Test, то услышите на внутреннем динамике компьютера звуковой сигнал. В случае если звуковой сигнал не слышен, проверьте подключен ли внутренний динамик, а если в компьютере установлена звуковая плата, правильно установите громкость сигнала.

Когда вы завершите работу с приложением, его можно закрыть. Для этого воспользуйтесь системным меню приложения или выберите из меню Test строку Exit.

Рис. 2.25. Приложение MFMenu


Чтобы объекты класса могли обрабатывать сообщения, в определении этого класса необходимо поместить макрокоманду DECLARE_MESSAGE_MAP. По принятым соглашениям эта макрокоманда должна записываться в конце определения класса в секции public.

Перейти на страницу:

Все книги серии Библиотека системного программиста

Похожие книги

C++
C++

С++ – это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы. Ключевым понятием С++ является класс. Класс – это тип, определяемый пользователем. Классы обеспечивают сокрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. С++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline-подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В С++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем. С++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из С++ программ можно использовать C библиотеки, и с С++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C. Эта книга предназначена главным образом для того, чтобы помочь серьезным программистам изучить язык и применять его в нетривиальных проектах. В ней дано полное описание С++, много примеров и еще больше фрагментов программ.

Мюррей Хилл , Бьёрн Страуструп , Бьярн Страустрап

Программирование, программы, базы данных / Программирование / Книги по IT