Добрый день. Подскажите как в ворде рисуется таблица и заполняется содержимым(например текстом) при печати, точнее какие GDI функции используются для этого? Перехватываю запросы к GDI для последующей обработки, простой текст или картинки вижу без проблем, а вот если страница содержит таблицу, то пусто, что то не перехватил по видимому....
Marik Вы бы объяснили какую таблицу вы ищите.... В винде таблицы обычно рисуются не особо заморачиваясь апи, которое повыше... Ну, с помощью коммонконтролов, если я не ошибаюсь...
в данном случаи интересует приложение MSWORD. Таблицы... да любая таблица нарисованная в этом приложении и заполненная текстом. хоть с одной строкой и с одним столбцом. При выводе на печать идет обращение к библиотеке GDI32.DLL создается контекст устрйоства (CreateDC) создается документ (StartDoc) создается страница (StartPage) дальше используя hDC идет рисование объекта. Если например вызвать TextOut то на страничку будет выведен просто текст так вот не могу отловить какая функция в GDI вызывается при рисовании таблицы и вообще проходит ли это через GDI?
Marik Ну, я думал, что вы имеете в виду таблицы как в эксель. Ну, тогда, насколько я понимаю, надо перехватывать ф-ии гди, которые рисуют линии. Ну, или он может вообще рисовать прямо на поверхность (что вряд ли). Вы бы сказали, что за ворд....
Список перехвата 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
пробовал использовать ApiMon(и от rohitab и от apimonitor), но как то с ходу не получилось выявить то что мне нужно
Ну, там же куча ф-й которые могут нарисовать квадрат Х) Вообще, самое логичное было бы погонять лист, на котором куча всяких таблиц, чем больше, тем лучше. И замерить частоту вызывания апи. Думаю, что если не в топе, то недалеко где-то будет интересующая вас ф-я. Думаю, что перехватывать лучше гди+, а не гди....