Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція № 6.doc
Скачиваний:
6
Добавлен:
22.07.2019
Размер:
48.64 Кб
Скачать

Рядкові ресурси і шаблон документа

Рядковий ресурс (string resource) — колекція рядків, що зберігається у файлі ресурсу. Це якнайкращий спосіб зберігання рядкових значень додатку. По можливості, завжди використовуйте саме його, замість жорсткого завдання рядків в коді самого додатку. Такий підхід істотно підвищує гнучкість додатку, а також спрощує його подальший супровід. Один з цих рядків критично важливий для архітектури документ/представлення і повинна мати той же ідентифікатор, що і переданий в конструктор класу CSingleDocTemplate. Фактично, вона складена з семи підрядків, розділених символом нового рядка (\n). Підрядки є набором параметрів, що встановлюють тип документа додатку. Наприклад, такий рядок, типовий для додатку SDI, є в додатку SDIApp.

STRINGTABLE

BEGIN

IDR_MAINFRAME

"SDIApp\n\nSDIApp\n\n\nSDIApp.Document\nSDIApp.Document"

END

Ресурси представлення

Більшість решти ресурсів додатку вказана в шаблоні документа за допомогою ідентифікатора ресурсу (resource ID). Ці ресурси асоціюються з тим типом документа, з яким працює дане застосування. У створених майстром AppWizard додатках SDI для всіх ресурсів встановленого за умовчанням шаблону документа використовується ідентифікатор ресурсу на ім'я IDR_МАINFRAME.

Майстер AppWizard комплектує головне фреймове вікно додатку відповідним меню, яке також має ідентифікатор IDR_MAINFRAME; Це означає, що в додатках однодокументного інтерфейсу вид меню залежатиме від типу активного документа, а в додатках багатодокументного інтерфейсу кожен окремий тип документа матиме свій власний вид меню. Якщо необхідно, щоб для всіх типів документа використовувалося однакове меню, досить вказати в шаблоні кожного типу посилання на один і той же ресурс меню.

Фрейм містить піктограму, яка нарівні з рештою всіх ресурсів володіє тим же самим ідентифікатором. Ця піктограма представляє даний додаток SDI. Наприклад, вищезгадану піктограму операційна система відображає на кнопці панелі завдань, коли додаток буде згорнутий. У додатку багатодокументного інтерфейсу дана піктограма застосовується для згорнутих дочірніх вікон MDI, а піктограма, використовувана для всього застосування, знаходиться в іншому ресурсі.

Додаток може відображати діалогове вікно, назване так само, як і ідентифікатор ресурсу шаблону. Такі застосування достатньо рідкісні; зазвичай додатки використовують діалогове вікно як основу інтерфейсу представлення документа. Далі в розділі розглядаються представлення що використовують діалогове вікно як основу свого інтерфейсу. Даний розділ достатньо важливий, оскільки більшість демонстраційних додатків цієї книги використовують подібний інтерфейс.

Додаток може містити растрові ресурси (bitmap resource), які майстер AppWizard використовує для створення стандартної панелі інструментів фреймового вікна. Не дивлячись на те, що панель інструментів складається з окремих кнопок, самі малюнки на кнопках фактично є фрагментами єдиного зображення. Докладніша інформація про клас CToolbar, використовуваний в бібліотеці MFC для створення панелі інструментів, приводиться в розділі 6, "Рядок стану і панель інструментів".

Оскільки фрейм реалізує вікно, що містить меню, він повинен також підтримувати таблицю акселераторів (accelerator table). Таблиця забезпечує взаємозв'язок між натиснутими клавішами акселератора (комбінаціями клавіш) і повідомленнями WM COMMAND, які додаток повинен посилати у тому випадку, коли операційна система виявляє натиснуті клавіші. Середовище виконання сама поклопочеться про пошук таблиці акселераторів, а також про передачу і диспетчеризацію повідомлень, які операційна система формує у відповідь на натиснення користувачем відповідної клавіші. Стандартна таблиця акселераторів, що створюється майстром AppWizard, містить акселератори (вони ж комбінації клавіш) стандартних елементів призначеного для користувача інтерфейсу і меню.

Будь-яким з цих ресурсів можна відредагувати так, щоб він відповідав потребам даного застосування. Але для досягнення необхідної мети внесення змін тільки в ресурси може опинитися недостатньо. Тому, перш ніж вносити зміни до ресурсів, упевніться, що добре розумієте роботу класів, що використовують їх, щоб додаток залишився працездатним.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]