要将本地CComSafeArray返回到LPSAFEARRAY输出参数,请按照以下步骤操作:
#include <atlbase.h>
#include <atlcom.h>
#include <atlsafe.h>
CComSafeArray<int> safeArray;
for (int i = 0; i < 10; i++) {
safeArray.Add(i);
}
Detach()
方法将CComSafeArray对象分离,并将其转换为LPSAFEARRAY。例如:LPSAFEARRAY pSafeArray = safeArray.Detach();
*ppSafeArray = pSafeArray;
*ppSafeArray = NULL;
完整的示例代码如下所示:
HRESULT GetSafeArray(LPSAFEARRAY* ppSafeArray) {
*ppSafeArray = NULL;
CComSafeArray<int> safeArray;
for (int i = 0; i < 10; i++) {
safeArray.Add(i);
}
LPSAFEARRAY pSafeArray = safeArray.Detach();
*ppSafeArray = pSafeArray;
return S_OK;
}
这样,您就可以将本地CComSafeArray对象返回到LPSAFEARRAY输出参数中了。
没有搜到相关的文章