Предварительный просмтор

Тема в разделе "Общие вопросы по С и С++", создана пользователем Guest, 8 авг 2003.

Статус темы:
Закрыта.
  1. Guest

    Guest Гость

    Хотелось бы побольше узнать о предварительном просмотре. В
    русской программе он смотрится инородным телом на своем
    иностранном языке. Можно ли его как-то настраивать под себя?
    В этой же связи: не могу решить проблему.
    В программе 3 меню и, соответственно, 3 панели инструментов,
    которые создал в Create. Переключая меню, вызываю ShowControlBar -
    прячу ненужные панели и показываю необходимую. Но после вызова
    PRINT PREVIEW, в окне появляются сразу все 3 панели инструментов.
    Попутно: что означает AFX_IDS_PREVIEW_CLOSE в String Table?
     
  2. Guest

    Guest Гость

    1. Все языко-зависимые компоненты для печати и предварительного
    просмотра (панель инструментов, диалог и строки) в соответствии
    с идеологией MFC оформлены как ресурсы. Эти ресурсы лежат в
    файле MFC42.DLL, но программа будет искать их там только если
    они отсутствуют в головной программе. Если же программа
    статически линкуется с MFC, ресурсы для печати/предварительного
    просмотра берутся из файла afxprint.rc. Чтобы в этом всём
    убедиться, достаточно открыть rc-файл, сгенерённым визардом, и
    найти там строчки:
    Код (Text):
    #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
    ...
    #include "afxprint.rc" // printing/print preview resources
    #endif
    Теперь понятно, как поправить ситуацию.
    - Копируем ресурсы из файла afxprint.rc (без окантовочных
    директив, то есть от строчки "// Printing Resources") в файл
    ресурсов нашей программы. При этом нужно проследить, чтобы
    новые ресурсы попали между директивами #ifdef APPSTUDIO_INVOKED
    и соответствующего #endif (иначе новые ресурсы нельзя будет
    изменить в редакторе).
    - Убираем из файла ресурсов строчку #include "afxprint.rc"
    (вручную или через View->Resource includes). На самом деле, это
    необходимо сделать только при статической линковке с MFC, так
    как при динамической линковке эта строчка не используется (как
    я уже говорил, в этом случае ресурсы берутся из MFC42.DLL).
    - Затем запускаем редактор ресурсов Visual Studio и
    русифицируем новые ресурсы. Не забудьте предварительно
    установить для каждого ресурса в свойствах Language:Russian,
    иначе вместо русского языка получите иероглифы!
    - Пересобираем проект и убеждаемся, что теперь предварительный
    просмотр говорит по-русски.

    2. После выхода из Print Preview запускается функция
    CView::OnEndPrintPreview (файл viewcore.cpp). Из неё вызывается
    ещё одна функция - CFrameWnd::OnSetPreviewMode (файл
    winfrm.cpp). Просмотрев код этой функции, нетрудно убедиться,
    что она делает видимыми все стандартные панели с
    идентификаторами от AFX_IDW_CONTROLBAR_FIRST до
    AFX_IDW_CONTROLBAR_FIRST+31 включительно. Таким образом, чтобы
    MFC не вмешивалась в вашу работу с панелями инструментов, нужно
    назначить им идентификаторы за пределами этого диапазона
    (например, AFX_IDW_CONTROLBAR_LAST-N, где N=0,1,2,...):
    m_wndToolBar.CreateEx(..., AFX_IDW_CONTROLBAR_LAST);

    3. Что касается строки AFX_IDS_PREVIEW_CLOSE, она просто
    содержит подсказку для команды Close предварительного
    просмотра. Если вам интересно, где она появляется, запустите
    режим предварительного просмотра, а затем наведите курсор на
    пункт Close из системного меню программы (которое раскрывается
    по щелчку на иконке в левом верхнем углу главного окна). При
    этом текст подсказки о закрытии предварительного просмотра
    появится в строке состояния. Можете заменить его на любой
    другой (на русском языке).
     
Загрузка...
Похожие Темы - Предварительный просмтор
  1. olga13
    Ответов:
    7
    Просмотров:
    6.447
Статус темы:
Закрыта.

Поделиться этой страницей