COM中,通过pIUnknown->QueryInterface(const IID& iid, void** ppv)来查询,但第一个参数不理解,他不是类ID,是接口ID,但这个const IID& iid是个什么值,是默认的吗?不是默认的如何获取?
解决方案 »
- 有谁解决过vs2003开发的dll中返回list在clear时出错的问题?
- 在北京,哪的软件开发培训好,请先辈指教,在线哭等!!!(偶工科大专,35了,没有多少编程经验)
- 如何返回存储过程中所有结果集(多个select)
- 请教一下,CView最大高度好象是65535象素,要是想大于这个值应该怎么办那,谢谢!
- 如何用C++计算一个特别大的数
- InstallShield的简单问题,Delphi版没人回答
- 建立win32 application工程,能不能使用MFC中的类和函数的?使用API编程的
- 如何粘贴图片
- ATL 菜单按钮项隐藏后刷新又出现了
- 谁有FAT32的资料
- 求批量修改文件名的程序?
- 关于MFC多线程控制多个软件执行顺序怎么实现
//
// typelib filename: XCDZIP35.OCX[
uuid(B26F6243-4C7D-11D1-910E-00600807163F),
version(2.78),
helpstring("Xceed Zip ActiveX Control")
]
library XCEEDZIPLib
{
// TLib : // TLib : Standard OLE Types : {BEF6E001-A874-101A-8BBA-00AA00300CAB}
importlib("olepro32.dll");
// TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
importlib("stdole32.tlb"); // Forward declare all types defined in this typelib
dispinterface _DXceedZip;
dispinterface _DXceedZipEvents; [
uuid(B26F6244-4C7D-11D1-910E-00600807163F),
helpstring("Dispatch interface for the Xceed Zip Control"),
hidden
]
dispinterface _DXceedZip {
properties:
[id(0x00000001)]
VARIANT_BOOL Abort;
[id(0x00000002)]
short Compression;
..........
[id(0xfffffdd8)]
void AboutBox();
}; [
uuid(B26F6245-4C7D-11D1-910E-00600807163F),
helpstring("Event interface for the Xceed Zip Control")
]
dispinterface _DXceedZipEvents {
properties:
methods:
[id(0x00000001)]
void Adding(
BSTR* FileName,
long Size,
long PSize,
long Processed,
short FileAttr,
BSTR* FTime,
long CRC,
short Ratio,
short Completion,
short Method,
short Encrypted,
short ComLen,
BSTR* Comment);
[id(0x00000002)]
void Deleting(BSTR* FileName);
[id(0x00000003)]
void Extracting(
BSTR* FileName,
long Size,
long PSize,
long Processed,
short FileAttr,
BSTR* FTime,
long CRC,
short Ratio,
short Completion,
short Method,
short Encrypted,
short ComLen,
BSTR* Comment);
[id(0x00000004)]
void FileComment(
BSTR* FileName,
short* ComLen,
BSTR* Comment);
[id(0x00000005)]
void Fixing(BSTR* FileName);
[id(0x00000006)]
void Listing(
BSTR* FileName,
long Size,
long PSize,
long Processed,
short FileAttr,
BSTR* FTime,
long CRC,
short Ratio,
short Completion,
short Method,
short Encrypted,
short ComLen,
BSTR* Comment);
........................
[id(0x0000000f)]
void Rename(
BSTR* OrigName,
BSTR* NewName);
}; [
uuid(B26F6246-4C7D-11D1-910E-00600807163F),
helpstring("Xceed Zip Control"),
control
]
coclass XceedZip {
[default] dispinterface _DXceedZip;
[default, source] dispinterface _DXceedZipEvents;
};
};是不是UUID这些呢
const GUID MyOcxCLSID = {0xB26F6246,0x4C7D,0x11D1,0x91,0x0E,0x00,0x60,0x08,0x07,0x16,0x3F}; //我的OCX,CLSID
if (CoInitialize(NULL) != S_OK) {
printf("Initialize COM library failed!\n");
return 1L;
} hResult = CoCreateInstance(MyOcxCLSID, NULL,CLSCTX_INPROC_SERVER, IID_IUnknown, (void **)&pUnknown);
if (hResult != S_OK)
{
printf("Create object failed!\n");
return 1L;
}//返回了IID_IUnknown是{00020430-0000-0000-C000-000000000046} //这个IID好象不是我要的
象是系统OLE hResult = pUnknown->QueryInterface(IID_IUnknown, (void **)&ppIface);
if (hResult != S_OK) {
pUnknown->Release();
printf("QueryInterface IDictionary failed!\n");
CoUninitialize();
return 1L;
}//返回的ppIface,通过**查询,也到不了我的OCX那里,我查了我的OCX是加载到10001000上面,而这个指针指向的地址在5FXXXXXX那,不是我的OCX代码
if (pUnknown->Release()!= 0)
CoUninitialize(); return 1L;
这个id叫接口ID,说白了,你想要这个COM组件的什么功能,就传递什么接口ID就可以了。