描述:
用MFC制作ActiveX控件时,方法中参数以及返回值类型在MFC ClassWizard中就给了那几种,我想问问各位大侠能不能自己设置这些类型?我想在我的方法中参数和返回值的类型都时“字符串数组”类型,该怎么实现啊??谢谢先!!!!!
解决方案1:
用VARIANT或者VARIANT*作参数,里面塞上SafeArray的指针,用SafeArrayCreateVector
SafeArrayPutElement,SafeArrayGetElement,SafeArrayDestroy操作SafeArray
SafeArray的元素为BSTR
ActiveX控件由于它的通用性,类型有所限制.
BSTR、LPSTR和LPWSTR
在Visual C++.NET的所有编程方式中,我们常常要用到这样的一些基本字符串类型,如BSTR、LPSTR和LPWSTR等。之所以出现类似上述的这些数据类型,是因为不同编程语言之间的数据交换以及对ANSI、Unicode和多字节字符集(MBCS)的支持。
那么什么是BSTR、LPSTR以及LPWSTR呢?
BSTR(Basic STRing,Basic字符串)是一个OLECHAR*类型的Unicode字符串。它被描述成一个与自动化相兼容的类型。由于操作系统提供相应的API函数(如SysAllocString)来管理它以及一些默认的调度代码,因此BSTR实际上就是一个COM字符串,但它却在自动化技术以外的多种场合下得到广泛使用。图1描述了BSTR的结构,其中DWORD值是字符串中实际所占用的字节数,且它的值是字符串中Unicode字符的两倍。
LPSTR和LPWSTR是Win32和VC++所使用的一种字符串数据类型。LPSTR被定义成是一个指向以NULL(‘\0’)结尾的8位ANSI字符数组指针,而LPWSTR是一个指向以NULL结尾的16位双字节字符数组指针。在VC++中,还有类似的字符串类型,如LPTSTR、LPCTSTR等
[in] BSTR inbstr,[out, retval] BSTR* pVal