|
-
Feb 5th, 2023, 01:02 PM
#11
Re: [VB6] Modern Shell Interface Type Library - oleexp.tlb
The previous version showed AddRef/QI/Release in the object browser confirming the problem, but the new version I posted does not... the IDL source seemed to confirm it was fixed:
Code:
[
odl,
uuid(2CD906A1-12E2-11DC-9FED-001143A055F9),
helpstring("Represents a geometry resource and defines a set of helper methods for manipulating and measuring geometric shapes. Interfaces that inherit from ID2D1Geometry define specific shapes.")
]
interface ID2D1Geometry : ID2D1Resource {
[helpstring("Compare how one geometry intersects or contains another geometry.")]
HRESULT _stdcall CompareWithGeometry(
[in] ID2D1Geometry* inputGeometry,
[in, out] void* inputGeometryTransform,
[in] single flatteningTolerance,
[out, retval] D2D1_GEOMETRY_RELATION* relation);
[helpstring("Converts a geometry to a simplified geometry that has arcs and quadratic beziers removed.")]
HRESULT _stdcall Simplify(
[in] D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption,
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[in] ID2D1SimplifiedGeometrySink* geometrySink);
[helpstring("Tessellates a geometry into triangles.")]
HRESULT _stdcall Tessellate(
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[in] ID2D1TessellationSink* tessellationSink);
[helpstring("Performs a combine operation between the two geometries to produce a resulting geometry.")]
HRESULT _stdcall CombineWithGeometry(
[in] ID2D1Geometry* inputGeometry,
[in] D2D1_COMBINE_MODE combineMode,
[in, out] void* inputGeometryTransform,
[in] single flatteningTolerance,
[in] ID2D1SimplifiedGeometrySink* geometrySink);
[helpstring("Computes the outline of the geometry. The result is written back into a simplified geometry sink.")]
HRESULT _stdcall Outline(
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[in] ID2D1SimplifiedGeometrySink* geometrySink);
[helpstring("Computes the area of the geometry.")]
HRESULT _stdcall ComputeArea(
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[out, retval] single* area);
[helpstring("Computes the length of the geometry.")]
HRESULT _stdcall ComputeLength(
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[out, retval] single* Length);
[helpstring("Computes the point and tangent a given distance along the path.")]
HRESULT _stdcall ComputePointAtLength(
[in] single Length,
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[in, out] void* POINT,
[in, out] void* unitTangentVector);
[helpstring("Get the geometry and widen it as well as apply an optional pen style.")]
HRESULT _stdcall Widen(
[in] single strokeWidth,
[in, out] void* strokeStyle,
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[in] ID2D1SimplifiedGeometrySink* geometrySink);
};
[
odl,
uuid(2CD90691-12E2-11DC-9FED-001143A055F9),
helpstring("Represents a Direct2D drawing resource.")
]
interface ID2D1Resource : IUnknown {
[helpstring("Retrieve the factory associated with this resource.")]
void _stdcall GetFactory([out] ID2D1Factory** factory);
};
which matches the source in exp_d2d.odl:
Code:
[
odl,
uuid(2CD906A1-12E2-11DC-9FED-001143A055F9),
helpstring("Represents a geometry resource and defines a set of helper methods for manipulating and measuring geometric shapes. Interfaces that inherit from ID2D1Geometry define specific shapes.")
]
interface ID2D1Geometry : ID2D1Resource {
[helpstring("Retrieve the bounds of the geometry, with an optional applied transform.")]
HRESULT _stdcall GetBounds(
[in, out] void* worldTransform,
[out, retval] D2D1_RECT_F* bounds);
[helpstring("Get the bounds of the corresponding geometry after it has been widened or have an optional pen style applied.")]
HRESULT _stdcall GetWidenedBounds(
[in] single strokeWidth,
[in] ID2D1StrokeStyle* strokeStyle,
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[out, retval] D2D1_RECT_F* bounds);
[helpstring("Checks to see whether the corresponding penned and widened geometry contains the given point.")]
HRESULT _stdcall StrokeContainsPoint(
[in] single pointX,
[in] single pointY,
[in] single strokeWidth,
[in] ID2D1StrokeStyle* strokeStyle,
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[out, retval] long* contains);
[helpstring("Test whether the given fill of this geometry would contain this point.")]
HRESULT _stdcall FillContainsPoint(
[in] single pointX,
[in] single pointY,
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[out, retval] long* contains);
[helpstring("Compare how one geometry intersects or contains another geometry.")]
HRESULT _stdcall CompareWithGeometry(
[in] ID2D1Geometry* inputGeometry,
[in, out] void* inputGeometryTransform,
[in] single flatteningTolerance,
[out, retval] D2D1_GEOMETRY_RELATION* relation);
[helpstring("Converts a geometry to a simplified geometry that has arcs and quadratic beziers removed.")]
HRESULT _stdcall Simplify(
[in] D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption,
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[in] ID2D1SimplifiedGeometrySink* geometrySink);
[helpstring("Tessellates a geometry into triangles.")]
HRESULT _stdcall Tessellate(
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[in] ID2D1TessellationSink* tessellationSink);
[helpstring("Performs a combine operation between the two geometries to produce a resulting geometry.")]
HRESULT _stdcall CombineWithGeometry(
[in] ID2D1Geometry* inputGeometry,
[in] D2D1_COMBINE_MODE combineMode,
[in, out] void* inputGeometryTransform,
[in] single flatteningTolerance,
[in] ID2D1SimplifiedGeometrySink* geometrySink);
[helpstring("Computes the outline of the geometry. The result is written back into a simplified geometry sink.")]
HRESULT _stdcall Outline(
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[in] ID2D1SimplifiedGeometrySink* geometrySink);
[helpstring("Computes the area of the geometry.")]
HRESULT _stdcall ComputeArea(
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[out, retval] single* area);
[helpstring("Computes the length of the geometry.")]
HRESULT _stdcall ComputeLength(
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[out, retval] single* length);
[helpstring("Computes the point and tangent a given distance along the path.")]
HRESULT _stdcall ComputePointAtLength(
[in] single length,
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[in, out] void* point,
[in, out] void* unitTangentVector);
[helpstring("Get the geometry and widen it as well as apply an optional pen style.")]
HRESULT _stdcall Widen(
[in] single strokeWidth,
[in, out] void* strokeStyle,
[in, out] void* worldTransform,
[in] single flatteningTolerance,
[in] ID2D1SimplifiedGeometrySink* geometrySink);
};
[
odl,
uuid(2CD90691-12E2-11DC-9FED-001143A055F9),
helpstring("Represents a Direct2D drawing resource.")
]
interface ID2D1Resource : stdole.IUnknown {
[helpstring("Retrieve the factory associated with this resource.")]
void _stdcall GetFactory([out] ID2D1Factory** factory);
};
Unfortunately while I can verify the problem exists I don't know how to resolve this when the IDL source is correct... any ideas?
 Originally Posted by The trick
The time to make our own typelib generation tool ))
twinBASIC is going to be able to generate typelibs soon... it already generates them internally from active-x DLLs. The end result wasn't VB compatible 6 months ago, but now that tB-generated active-x controls can be used in VB6, that is likely to have changed. There's a bug preventing me from building tbShellLib into a DLL to extract the typelib manually but that should be fixed in the next day or too, wayne was working on it.
If it works, tbShellLib will replace oleexp for vb6 too.
In fact, running your code on the tbShellLib version prints GetBounds. But twinBASIC also prints QI when using oleexp suggesting the problem does lie in the TLB.
Last edited by fafalone; Feb 5th, 2023 at 01:29 PM.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|