На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> Работа с колонтитулами Word
    Добрый вечер народ, подскажите где глянуть пример работы с колонтитулами, везде натыкаюсь только на VBA, а нужно Visual C++
      Так же как на VBA, только на Visual C++. Классы OLE одинаковые, интерфейсы идентичные. Разница только в получении интерфейсов. И кое-где ещё чуточку в значениях, но это исключительно из-за разных языков.
      Сообщение отредактировано: Qraizer -
        Я не спорю, что так же :) но как например вот это преобразовать:

        ExpandedWrap disabled
          With ActiveDocument.Sections(1)
           .PageSetup.DifferentFirstPageHeaderFooter = True
           .Footers(wdHeaderFooterPrimary).PageNumbers.Add _
           FirstPage:=True
          End With


        Добавлено
        не тот пример...

        ExpandedWrap disabled
          With ActiveDocument
           .PageSetup.DifferentFirstPageHeaderFooter = True
           .Sections(1).Footers(wdHeaderFooterFirstPage) _
           .Range.InsertBefore _
           "Written by Kate Edson"
          End With
          Ну, на API я бы, пожалуй, смог привести код. Когда-то писал аппликуху, без использования любых библиотек типов, чисто на IDispatch и WinAPI, общающуюся с Word и Excel серверами OLE Automation. Но там своя, довольно простая, впрочем, и потому не вполне удобная структура классов поверх этого низкоуровневого безобразия. Было бы что-то вроде:
          ExpandedWrap disabled
            {
              OLE      ole;
              WordApp  appWord;
             
              Property docWd = appWord.GetObj(L"Documents");
              Property doc   = docWd.Call(L"Open", L"..."));
              
              doc.GetObj(L"PageSetup").SetVal(L"DifferentFirstPageHeaderFooter", -1);                               // True
              Property(Property(doc.GetObj(L"Sections").Call(L"Item", 1)).GetObj(L"Footers").Call(L"Item", 2))      // wdHeaderFooterFirstPage
                .GetObj(L"Range").Call(L"InsertBefore", L"Written by Kate Edson");
              doc.Call(L"Save");
              doc.Call(L"Close");
            }
          но вряд ли это можно считать ответом на исходный вопрос, ибо к этому надо ещё 9кб заголовков с классами и 5кб с реализацией методов.
          А на MFC я Офисные классы не програмил. Если никто ничего дельного не предложит, могу предложить посмотреть сюда. Оттуда, вроде, для быстрого старта всё можно найти.
            Нашел вот такой пример:

            ExpandedWrap disabled
              _ApplicationPtr word;
              HeadersFooters m_foo;
               
              m_foo = word->ActiveDocument->Sections->Item(1)->GetFooters()->Item(wsHeaderFooterPrimary);
               
              CString m_footer = m_foo->GetRange()->GetTables()->Item(1)->Cell(1,1)->FitText;


            в дебагере видно, что получаем m_foo, но после этого сразу открывается окно с документом и строка получения значения колотитула просто перескакивается.
            Не понятно...
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0224 ]   [ 16 queries used ]   [ Generated: 18.04.24, 03:17 GMT ]