Перейти на главную   
  helloworld.ru - документация и книги по программированию  
helloworld.ru - документация и книги по программированию
    главная     хостинг    
Поиск по сайту:  
Смотрите также
Языки программирования
C#
MS Visual C++
Borland C++
C++ Builder
Visual Basic
Quick Basic
Turbo Pascal
Delphi
JavaScript
Java
PHP
Perl
Assembler
AutoLisp
Fortran
Python
1C

Интернет-технологии
HTML
VRML
HTTP
CGI
FTP
Proxy
DNS
протоколы TCP/IP
Apache

Web-дизайн
HTML
Дизайн
VRML
PhotoShop
Cookie
CGI
SSI
CSS
ASP
PHP
Perl

Программирование игр
DirectDraw
DirectSound
Direct3D
OpenGL
3D-графика
Графика под DOS

Алгоритмы
Численные методы
Обработка данных

Сис. программирование
Драйверы

Базы данных
MySQL
SQL

Другое

Хостинг


Друзья
demaker.ru
Реклама

Лучший хостинг. Аренда серверов




helloworld.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.


[ Назад | Оглавление | Далее ]









helloworld.ru © 2001-2021
Все права защищены