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

📄 arraycomplex.cpp

📁 arraypass 数值阵列操作
💻 CPP
字号:
// arraycomplex.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdio.h"
//#include "comutil.h"
#include "mwcomutil.h"
#import "D:\MATLAB6p5p1\bin\win32\mwcomutil.dll" raw_interfaces_only
#include "arraypasscom_1_0.h"

int main(int argc, char* argv[])
{
	// Initialize COM
    if ((FAILED(CoInitialize(NULL))))
    {
        printf("CoInitialize failed.\n");
        exit(1);
    }

	MWComUtil::IMWComplexPtr pComplexIn1;
	MWComUtil::IMWComplexPtr pComplexIn2;
	MWComUtil::IMWStructPtr pStruct;
	//MWComUtil::IMWFlagsPtr pFlags;
	HRESULT hr,hr1,hr2;
	hr1=pComplexIn1.CreateInstance(__uuidof(MWComUtil::MWComplex));
	hr2=pComplexIn2.CreateInstance(__uuidof(MWComUtil::MWComplex));
	//pFlags.CreateInstance(__uuidof(MWComUtil::MWFlags));
	//hr2=pStruct.CreateInstance(__uuidof(MWComUtil::MWStruct));
	//pComplexIn1.
	if((FAILED(hr1)||FAILED(hr2)))
	//if(FAILED(hr2))
	{
		printf("输入复数型数组创建失败!\n");
		return FALSE;
	}
	VARIANT varReal[2],varImag[2];
	VARIANT varOutComplex;
	VARIANT varComplexIn1,varComplexIn2;
	VariantInit(&varOutComplex);
	VariantInit(&varComplexIn1);
	VariantInit(&varComplexIn1);
	int i=0,j=0;
	for(i=0;i<2;i++)
	{
		VariantInit(&varReal[i]);
		varReal[i].vt=VT_R8|VT_ARRAY;
		VariantInit(&varImag[i]);
		varImag[i].vt=VT_R8|VT_ARRAY;
	}

	SAFEARRAY * pa[4];
	SAFEARRAYBOUND bound={4,0};
	double * data=NULL;
	for(i=0;i<4;i++)
	{		
		pa[i]=SafeArrayCreate(VT_R8,1,&bound);
		SafeArrayAccessData(pa[i],(void**)&data);
		for(j=0;j<4;j++)
		{
			data[j]=j+i;
		}
		SafeArrayUnaccessData(pa[i]);
	}

	varReal[0].parray=pa[0];
	varReal[1].parray=pa[2];
	varImag[0].parray=pa[3];
	varImag[1].parray=pa[4];
	Iarraypasscom * pArrayPasscom=NULL;
	hr=CoCreateInstance(CLSID_arraypasscom,NULL,CLSCTX_ALL,IID_Iarraypasscom,(void**)&pArrayPasscom);
	if(FAILED(hr))
	{
		printf("Iarraypasscom 创建失败\n");
		return 0;
	}

	pComplexIn1->put_Real(varReal[0]);
	pComplexIn1->put_Imag(varImag[0]);

	pComplexIn2->put_Real(varReal[0]);
	pComplexIn2->put_Imag(varImag[0]);

	varComplexIn1.vt=VT_DISPATCH;
	varComplexIn2.vt=VT_DISPATCH;
	pComplexIn1->QueryInterface(IID_IDispatch,(void**)&varComplexIn1.pdispVal);
	pComplexIn2->QueryInterface(IID_IDispatch,(void**)&varComplexIn2.pdispVal);

	pArrayPasscom->addcomplexarray(1,&varOutComplex,varComplexIn1,varComplexIn2);
	//pArrayPasscom->get_MWFlags(&pFlags);
	//pFlags->get_DataConversionFlags(

	printf("输入复数数组1\n");
	pArrayPasscom->displayarray(varComplexIn1);
	printf("输入复数数组2\n");
	pArrayPasscom->displayarray(varComplexIn2);
	printf("相加后的输出复数数组1\n");
	pArrayPasscom->displayarray(varOutComplex);

	
	VariantInit(&varOutComplex);
	VariantInit(&varComplexIn1);
	VariantInit(&varComplexIn1);
	for(i=0;i<2;i++)
	{
		VariantInit(&varReal[i]);		
		VariantInit(&varImag[i]);		
	}

	SafeArrayDestroy(pa[0]);
	SafeArrayDestroy(pa[1]);
	SafeArrayDestroy(pa[2]);
	SafeArrayDestroy(pa[3]);

	pComplexIn1->Release();
	pComplexIn1=NULL;
	pComplexIn2->Release();
	pComplexIn2=NULL;

	pa[0]=NULL;
	pa[1]=NULL;
	pa[2]=NULL;
	pa[3]=NULL;

	CoUninitialize();

	return 0;
}

⌨️ 快捷键说明

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