A Miracle just happened I used this code
and it Worked !!
OleCreatePropertyFrame( _
%NULL, _
0, 0, _
FilterInfo.achName, _
1, _
pFilterUnk, _
caGUID.cElems, _
caGUID.pElems, _
0, _
0, %Null)
msgbox "Done"
But I changed the Declare in OleCtl.inc to
DECLARE FUNCTION OleCreatePropertyFrame IMPORT "OLEAUT32.DLL" ALIAS "OleCreatePropertyFrame" ( _
BYVAL hwndOwner AS DWORD _ ' __in HWND hwndOwner
, BYVAL x AS DWORD _ ' __in UINT x
, BYVAL y AS DWORD _ ' __in UINT y
, BYREF lpszCaption AS WSTRINGZ _ ' __in LPCOLESTR lpszCaption
, BYVAL cObjects AS DWORD _ ' __in ULONG cObjects
, BYREF lplpUnk AS IUnknown _ ' __in LPUNKNOWN FAR* lplpUnk
, BYVAL cPages AS DWORD _ ' __in ULONG cPages
, BYVAL lpPageClsID AS GUID PTR _ ' __in LPCLSID lpPageClsID [array]
, BYVAL lcid AS DWORD _ ' __in LCID lcid
, BYVAL dwReserved AS DWORD _ ' __in DWORD dwReserved
, BYVAL lpvReserved AS DWORD _ ' __in LPVOID lpvReserved
) AS LONG ' HRESULT
so I change BYVAL lplpUnk AS IUnknown to be BYREF lplpUnk AS IUnknown
and
BYREF lpPageClsID AS GUID to be BYVAL lpPageClsID as GUID PTR
The only trouble is I don't like changing definitions
Should I leave the BYVAL lplpUnk AS IUnknown and pass in OBJPTR(pFilterUnk) would that work?