GDI и рисование таблицы

Тема в разделе "WASM.WIN32", создана пользователем Marik, 2 апр 2011.

  1. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    Добрый день.
    Подскажите как в ворде рисуется таблица и заполняется содержимым(например текстом) при печати, точнее какие GDI функции используются для этого? Перехватываю запросы к GDI для последующей обработки, простой текст или картинки вижу без проблем, а вот если страница содержит таблицу, то пусто, что то не перехватил по видимому....
     
  2. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Marik
    Вы бы объяснили какую таблицу вы ищите....
    В винде таблицы обычно рисуются не особо заморачиваясь апи, которое повыше...
    Ну, с помощью коммонконтролов, если я не ошибаюсь...
     
  3. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    в данном случаи интересует приложение MSWORD. Таблицы... да любая таблица нарисованная в этом приложении и заполненная текстом. хоть с одной строкой и с одним столбцом. При выводе на печать идет обращение к библиотеке GDI32.DLL
    создается контекст устрйоства (CreateDC)
    создается документ (StartDoc)
    создается страница (StartPage)
    дальше используя hDC идет рисование объекта. Если например вызвать TextOut то на страничку будет выведен просто текст

    так вот не могу отловить какая функция в GDI вызывается при рисовании таблицы и вообще проходит ли это через GDI?
     
  4. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    почти уверен что никакая, рисуется линиями либо точками.
     
  5. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    как перехватываете? IAT? попробуйте сплайсинг
     
  6. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    Если распечатывать рисунки. то они отображаются нормально.
    именно так и делаю
     
  7. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Marik
    Ну, я думал, что вы имеете в виду таблицы как в эксель.
    Ну, тогда, насколько я понимаю, надо перехватывать ф-ии гди, которые рисуют линии.
    Ну, или он может вообще рисовать прямо на поверхность (что вряд ли).
    Вы бы сказали, что за ворд....
     
  8. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    не жалко код - давайте
    иначе хотябы список перехвата
    перехват работает точно?
     
  9. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Z3N
    ну это перебор
    однозначно нет
     
  10. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    Список перехвата

    CreateDCA
    CreateDCW
    DeleteDC
    SaveDC
    RestoreDC
    StartDocW
    AbortDoc
    EndDoc
    StartPage
    EndPage
    ResetDCA
    ResetDCW
    SetTextColor
    SetBkColor
    SetBkMode
    SetTextAlign
    SetTextCharacterExtra
    SetTextJustification
    SetMapperFlags
    SelectObject
    SetDCBrushColor
    SetDCPenColor
    TextOutA
    TextOutW
    ExtTextOutA
    ExtTextOutW
    Arc
    BitBlt
    Chord
    Ellipse
    ExcludeClipRect
    ExtFloodFill
    FillRgn
    FloodFill
    FrameRgn
    InvertRgn
    LineTo
    OffsetClipRgn
    MaskBlt
    PlgBlt
    PatBlt
    Pie
    PaintRgn
    PolyPolygon
    Rectangle
    RoundRect
    SetMetaRgn
    SelectClipPath
    SelectClipRgn
    ExtSelectClipRgn
    IntersectClipRect
    SetBoundsRect
    SetGraphicsMode
    SetLayout
    SetPixel
    SetPixelV
    SetPixelFormat
    SetPolyFillMode
    StretchBlt
    StretchDIBits
    SetROP2
    SetStretchBltMode
    SetSystemPaletteUse
    AngleArc
    PolyPolyline
    ArcTo
    PolyDraw
    MoveToEx
    AbortPath
    BeginPath
    CloseFigure
    EndPath
    FillPath
    SetWorldTransform
    ModifyWorldTransform
    SetColorAdjustment
    SetArcDirection
    SetMiterLimit
    StrokeAndFillPath
    StrokePath
    WidenPath
    PolyTextOutA
    PolyTextOutW
    Polygon
    Polyline
    PolyBezier
    PolyBezierTo
    PolylineTo
    SetBrushOrgEx
    SetColorSpace
    ColorCorrectPalette
    SetMapMode
    OffsetViewportOrgEx
    OffsetWindowOrgEx
    SetViewportExtEx
    SetViewportOrgEx
    SetWindowExtEx
    SetWindowOrgEx
    SelectPalette
    SetDIBColorTable
    SetDIBits
    SetDIBitsToDevice
    RealizePalette
    UpdateColors
    ScaleViewportExtEx
    ScaleWindowExtEx
    FlattenPath
    DrawEscape
    Escape
    ExtEscape
    GdiComment
    SetICMMode

    Перехват работает точно
    тестирую на WORD 2007
     
  11. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    я так полагаю перехвачено все что в импорте с гдай32?
     
  12. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    а гдай+?
    сорри раскладка непереключается
     
  13. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    перехвачено еще не все из GDI32 :)
    GDI+ это надстройка над GDI32 смысл ее перехватывать?
     
  14. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    уверен?
     
  15. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    щас я залезу в оллю
    вы скорее правы чем нет
     
  16. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    тогда капимон и тд
     
  17. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    пробовал использовать ApiMon(и от rohitab и от apimonitor), но как то с ходу не получилось выявить то что мне нужно
     
  18. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Ну, там же куча ф-й которые могут нарисовать квадрат Х)
    Вообще, самое логичное было бы погонять лист, на котором куча всяких таблиц, чем больше, тем лучше.
    И замерить частоту вызывания апи. Думаю, что если не в топе, то недалеко где-то будет интересующая вас ф-я.
    Думаю, что перехватывать лучше гди+, а не гди....