areatest.cpp

来自「面向软件工程的Visual C++网络程序开发」· C++ 代码 · 共 77 行

CPP
77
字号
// AreaTest.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "..\AreaSvr\AreaSvr.h"
#include "..\AreaSvr\GUID.h"
#include "..\AreaSvr\AreaSvr_i.c"

int main(int argc, char* argv[])
{
	HRESULT		hRslt;
	IUnknown*	pIUnknown = NULL;
	// 初始化COM子系统
	hRslt = CoInitialize(NULL);
	/* 
	hRslt = CoGetClassObject(CLSID_ComArea, 
		CLSCTX_INPROC_SERVER, 
		NULL, 
		IID_IUnknown, 
		(VOID**)&pIUnknown);
	if (FAILED(hRslt)) {
		cerr << "Faile to get IUnknown interface.\n";
		return 1;
	}
	// 得到IArea接口
	IComArea*	pIArea = NULL;
	hRslt = pIUnknown->QueryInterface(IID_IComArea, (VOID**)&pIArea);
	if (FAILED(hRslt)) {
		cerr << "Faile to get IArea interface.\n";
		return 1;
	}
	*/ 
	// 直接查找接口——法二
	hRslt = CoCreateInstance(CLSID_ComArea, 
		NULL, 
		CLSCTX_INPROC_SERVER, 
		IID_IUnknown, 
		(VOID**)&pIUnknown);
	if (FAILED(hRslt)) {
		cerr << "Faile to create COM object.\n";
		return 1;
	}
	IComArea* pIArea = NULL;
	hRslt = pIUnknown->QueryInterface(IID_IComArea, (VOID**)&pIArea);
	if (FAILED(hRslt)) {
		cerr << "Faile to get IComArea interface.\n";
		return 1;
	}
	pIArea->AddRef();
	// 调用方法求面积
	TRIANGLE_INFO	triangle;
	double	dArea = .0;
	cout << "Input a, b, c of a triangle : ";
	cin >> triangle.a >> triangle.b >> triangle.c;
	pIArea->TriangleArea(&triangle, &dArea);
	cout << "Area of the triangle : " << dArea << endl;

	RECTANGLE_INFO	rectangle;
	cout << "Input width, height of a rectangle : ";
	cin >> rectangle.w >> rectangle.h;
	pIArea->RectangleArea(&rectangle, &dArea);
	cout << "Area of the rectangle : " << dArea << endl;

	CIRCLE_INFO	circle;
	cout << "Input radius of a circle :";
	cin >> circle.r;
	pIArea->CircleArea(&circle, &dArea);
	cout << "Area of the circle : " << dArea << endl;
	// 清除引用计数
	pIUnknown->Release();
	pIArea->Release();
	// 关闭COM子系统
	CoUninitialize();

	return 0;
}

⌨️ 快捷键说明

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