⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 typesaferqi.cpp

📁 经验交流,从网上下载的好东西望大家分享
💻 CPP
字号:
// client.cpp

#define TypeSaferQI(ppObject) QueryInterface(__uuidof(*ppObject), (void**)ppObject)

#define _WIN32_DCOM
#include <iostream.h>
#include <stdio.h>
#include "Component with Registration\component.h"

// {10000002-0000-0000-0000-000000000001}
const CLSID CLSID_InsideCOM = {0x10000002,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}};

void main()
{
	cout << "Client: Calling CoInitialize()" << endl;
	CoInitialize(NULL);
		
	IUnknown* pUnknown;
	ISum* pSum;

	cout << "Client: Calling CoCreateInstance() " << endl;
	CoCreateInstance(CLSID_InsideCOM, NULL, CLSCTX_INPROC_SERVER, IID_IUnknown, (void**)&pUnknown);

	cout << "Client: Calling QueryInterface() for ISum on " << pUnknown << endl;
//	HRESULT hr = pUnknown->QueryInterface(IID_ISum, (void**)&pSum);
	HRESULT hr = pUnknown->TypeSaferQI(&pSum);

	if(FAILED(hr))
		cout << "QueryInterface FAILED" << endl;

	cout << "Client: Calling Release() for pUnknown" << endl;
	hr = pUnknown->Release();

	cout << "Client: pSum = " << pSum << endl;

	int sum;
	hr = pSum->Sum(123, 43, &sum);
	if(SUCCEEDED(hr))
		cout << "Client: Calling Sum() return value is " << sum << endl;

	cout << "Client: Calling Release() for pSum" << endl;
	hr = pSum->Release();

	cout << "Client: Calling CoUninitialize()" << endl;
	CoUninitialize();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -