On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru


Зимнюю спецодежду Компания Профессионал.





 

Глава_19. Ресурсы клавиш-акселераторов

Bообще говоря, в принципе, можно определить комбинации клавиш акселерации, не только дублирующие строки меню, но и вызывающие передачу других командных сообщений.

Для создания и изменения таблиц акселераторов следует использовать редактор ресурсов Microsoft Visual C++. Он позволяет определить соответствие комбинаций клавиш и идентификаторов командных сообщений.

Для приложений, имеющих оконный интерфейс и созданных с использованием MFC AppWizard, таблица акселераторов с идентификатором IDR_MAINFRAME создается автоматически. Загружается же она приложением во время создания главного окна.

Например, таблица акселераторов с идентификатором IDR_MAINFRAME загружается многооконным приложением во время создания главного окна методом LoadFrame , вызываемом в методе InitInstance главного класса приложения. Метод LoadFrame также используется для одновременной загрузки и ряда других ресурсов (меню, таблицы текстовых строк, пиктограммы), имеющих одинаковый идентификатор ресурса :

	CMainFrame* pMainFrame = new CMainFrame;
	if (!pMainFrame->LoadFrame(IDR_MAINFRAME)) return FALSE;
	pMainFrame->ShowWindow(m_nCmdShow);
	pMainFrame->UpdateWindow();
	m_pMainWnd = pMainFrame;

Каждый тип документа может иметь собственную таблицу акселераторов. Эта таблица будет загружена автоматически вместе с меню (и некоторыми другими ресурсами), когда пользователь откроет окно просмотра документа данного типа.

Чтобы определить таблицу акселераторов для документов данного типа, надо просто включить ее в файл ресурсов приложения, присвоив ей идентификатор данного типа документов (например, IDR_MULTITYPE). Тогда, если в список шаблонов документов приложения при добавлен шаблон документа типа IDR_MULTITYPE, то при создании окна просмотра для документа этого типа будет загружатся соответствующая таблица акселераторов. Шаблон документа добавляется в список шаблонов следующим образом :

	AddDocTemplate(new CMultiDocTemplate(IDR_MULTITYPE,
			RUNTIME_CLASS(CMultiDoc),
			RUNTIME_CLASS(CChildFrame),
			RUNTIME_CLASS(CMultiView)));

Если документ создается без использования средств MFC AppWizard и модели ' Document-View', то можно загрузит таблицу акселераторов с помощью метода LoadAccelTable , входящего в состав класса CFrameWnd . В качестве параметра этому методу следует указать имя ресурса таблицы акселераторов. Если таблица акселераторов вместо строкового имени имеет числовой идентификатор, то необходимо воспользоваться макрокомандой MAKEINTRESOURCE.

Назад       Содержание       Вперёд