vml dom
用exescope打开c:\program files\common files\microsoft shares\vgx.dll
有如下tlb
|
VgxDraw; // Microsoft VML Renderer Object Library
Dispatch _IVgDispObj; ......
Dispatch IVgPath; GUID={000D0343-0000-0000-C000-000000000046}; function QueryInterface(riid:^GUID; out ppvObj:^^void); function AddRef: UI4; function Release: UI4; function GetTypeInfoCount(out pctinfo:^UINT); function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void); function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4); function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT); property-get Application: IDispatch; property-get Creator: I4; property-get value: BSTR; property-put value(BSTR); property-get parentShape: IDispatch; property-get textboxrect: ^IVgFixedRectangleArray; property-get limo: ^IVgVector2D; property-get v: BSTR; property-put v(BSTR); property-get segments: ^IVgSegments; property-get arrowok: VgTriState; property-put arrowok(VgTriState); property-get shadowok: VgTriState; property-put shadowok(VgTriState); property-get extrusionok: VgTriState; property-put extrusionok(VgTriState); property-get strokeok: VgTriState; property-put strokeok(VgTriState); property-get textpathok: VgTriState; property-put textpathok(VgTriState); property-get gradientshapeok: VgTriState; property-put gradientshapeok(VgTriState); property-get fillok: VgTriState; property-put fillok(VgTriState); property-get template: BSTR; property-put template(BSTR);
....
Dispatch IVgSegments; GUID={000D0360-0000-0000-C000-000000000046}; function QueryInterface(riid:^GUID; out ppvObj:^^void); function AddRef: UI4; function Release: UI4; function GetTypeInfoCount(out pctinfo:^UINT); function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void); function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4); function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT); property-get Application: IDispatch; property-get Creator: I4; property-get parentPath: IDispatch; property-get length: INT; property-get item(Index:INT): ^IVgSegment;
Dispatch IVgSegment; GUID={000D0361-0000-0000-C000-000000000046}; function QueryInterface(riid:^GUID; out ppvObj:^^void); function AddRef: UI4; function Release: UI4; function GetTypeInfoCount(out pctinfo:^UINT); function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void); function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4); function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT); property-get Application: IDispatch; property-get Creator: I4; property-get parentPath: IDispatch; property-get command: VgSegmentCommandType; property-get x(Index:INT): R8; property-put x(Index:INT; R8); property-get y(Index:INT): R8; property-put y(Index:INT; R8); property-get xParamType(Index:INT): VgSegmentCommandParamType; property-put xParamType(Index:INT; VgSegmentCommandParamType); property-get yParamType(Index:INT): VgSegmentCommandParamType; property-put yParamType(Index:INT; VgSegmentCommandParamType); property-get vertexCount: INT; property-get vertexGroupCount: INT; property-get numberVerticiesPerGroup: INT; function addVertexGroup(groupIndexToInsertBefore:INT); function removeVertexGroup(groupIndexToDestroy:INT); function insertAdjacentSegment(pos:VgSegmentInsertionPosition; Type:VgSegmentCommandType): ^IVgSegment; function remove;
.....
|
例如
<v:shape id="rect01" fillcolor="red" strokecolor="red" coordorigin="0 0" coordsize="200 200" style="position:relative;top:1;left:1;width:20;height:20" path="m 1,1 l 1,200, 200,200, 200,1 x e"> </v:shape> |
中的rect01的各顶点索引
|
rect01.path.segments.item(0).x(0)
rect01.path.segments.item(0).y(0)
rect01.path.segments.item(2).x(0)
rect01.path.segments.item(2).y(0)
rect01.path.segments.item(2).x(1)
rect01.path.segments.item(2).y(1)
rect01.path.segments.item(2).x(2)
rect01.path.segments.item(2).y(2)
|