描述:
是这样的,我要使用frontpage的com接口来操作它,是通过vc6.0的classwizard生成控制类的,其中的WebWindow接口有SelectedFiles这样一个属性,通过typelib查看程序看到它的声明为:
[id(0x00000009), propget, helpcontext(0x003d478a)]
HRESULT SelectedFiles([out, retval] SAFEARRAY(WebFile*)* psa);
但classwizard没有能成功地生成相应的get函数,它给出的理由是:
// method 'GetSelectedFiles' not emitted because of invalid return type or parameter type
我想大概是参数的问题吧。不过COM接口参数是SAFEARRAY的应该很多吧,应该怎么写这个函数呢?我试着写成下面这样:
HRESULT WebWindow::GetSelectedFiles(SAFEARRAY* psa)
{
HRESULT hRes;
static BYTE parms[] = VTS_PVARIANT;
InvokeHelper(0x9, DISPATCH_PROPERTYGET, VT_HRESULT, (void*)&hRes, parms, psa);
return hRes;
}
不知道对不对。不过即使我写成上面这样,但我不知道怎么去调用,我不知道是应该在外面(调用者)分配内存还是这个方法自己会分配内存。如果在外面分配内存,那不知道到底应该分配多少内存啊?我曾试着在外面Create SafeArray和不Create直接传空值进去,结果都是出现异常,异常号为0x80020011(不支持集合)。哪位有这方面的经验,还望能指点指点,应该如何定义这个函数,又如何调用。
解决方案1:
通常这个方法自己会分配内存.