Если вы в 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 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

Большинство строк меню приложения Multi имеет стандартные идентификаторы. Соответствующие им стандартные командные сообщения обрабатываются различными классами библиотеки MFC. Так, например, стандартное командное сообщение с идентификатором ID_FILENEW от строки New меню File, по умолчанию обрабатывается методом OnFileNew класса CWinApp. Мы уже рассказывали о стандартных командных сообщениях в 24 томе из серии “Библиотека системного программиста”. Более подробное описание стандартных командных сообщений вы можете найти в документации Microsoft Visual C++.

В этой книге мы посвятили меню приложений отдельную главу, которая называется “Меню, панели управления и панели состояния”. Дополнительную информацию об использовании меню вы можете получить в 13 томе серии “Библиотека системного программиста”.

Пиктограмма
Перейти на страницу:

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