![]() |
|
|
![]()
|
|
| maq |
|
||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
У меня такая простенькая задача. В программе регистрируюся 2 шаблона (D_А и D_В) CMultiDocTemplate одного типа документа D (в программе имеются и другие типы документов, но я их сейчас пропускаю). Дается команда открыть шаблон D_В документа типа D. В таком случае программа должна выполнить следующее:
a) если документ D не открыт – открыть документ D в шаблоне D_В и аквизировать его фрейм. b) если документ D открыт в шаблоне D_В (независимо от того открыт ли он еще и в шаблоне D_А ) – аквизировать его фрейм. c) если документ D открыт, но не в шаблоне D_В – открыть активный документ D в шаблоне D_В и аквизировать его фрейм.
Имеется класс RDocTemplate, чтобы определить ID шаблона.
Проблема в том, что у второго шаблона (одного и того же документа) GetFirstDocPosition() всегда возвращает 0 (см. Ф-ю CTMP006App::OnAB). Не могу понять почему? Кто-нибудь подскажет? |
||||||||
|
|||||||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Не очень разбиралась в коде (слишком много букв), но явно есть какая-то лажа.
1) Во-первых, ты регистрируешь в приложении 2 шаблона, причем оба типа CMultiDocTemplate, хотя и с разными параметрами, а вот RDocTemplate - не регистрируешь, так что его как бы и нет - ну нет его в менеджере! А ты к нему приводишь... Нехорошо 2) Во-вторых, шаблон хранит только документы, открытые с его помощью, а вовсе не все документы своего типа! Т.е. с помощью первого шаблона ты не увидишь документы, открытые во втором. Лучше сделать так: 1) Регистрировать не MultiDocTemplate, а создать свой тип (или даже 2 типа - для каждого вида шаблона) - тогда можно спокойно использовать приведение, можно писать в шаблоне спец. функции - иногода это удобно 2) Поиск документа нужно организовать так: перебираем все зарегистрированные шаблоны, если это шаблон нужного типа (одного из 2), то ищем в нем наш документ. -------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |