顯示具有 COM 標籤的文章。 顯示所有文章
顯示具有 COM 標籤的文章。 顯示所有文章

2008年9月5日 星期五

'CoInitializeEx' : undeclared identifier 錯誤

從MSDN中知道了要include objbase.h標頭檔

 #include <objbase.h>
 void main()
 {
  int hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); 
 }

奇怪怎麼發生錯誤? Google了一下原來在 ColnitializeEx在objbase.h中的定義如下:

 #if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM
 WINOLEAPI  CoInitializeEx(LPVOID pvReserved, DWORD dwCoInit);
 #endif // DCOM

這表示使用前必須先加入:#define   _WIN32_DCOM
重點是此行必須加在 #include <objbase.h> 之前,改成如下即可執行。

 #define   _WIN32_DCOM
 #include <objbase.h>
 void main()
 {
  int hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); 
 }


2008年9月4日 星期四

IDL的型態 和C++、Visual Basic及JAVA 型態之間的轉換




IDL Type

C++

Visual Basic

Java

signed char

signed char


byte

unsigned char

unsigned char

Byte


wchar_t

wchar_t

Integer

char

signed short

short

Integer

short

unsigned short

unsigned short



signed int

int

Long

int

unsigned int

unsigned int



signed hyper

__int64


long

float

float

Single

float

double

double

Double

double

BSTR

BSTR

String

java.lang.String

boolean

bool

Boolean

boolean

VARIANT

VARIANT

Variant

com.ms.com.Variant

DATE

DATE

Date

double

CY

CY

Currency

long

SAFEARRAY

SAFEARRAY

[] (a standard Visual Basic array)

com.ms.com.SafeArray

IUnknown*

IUnknown*

IUnknown

com.ms.com.IUnknown

IDispatch*

IDispatch*

Object

java.lang.Objec

2008年9月3日 星期三

建立一個COM物件時,需要2個ID

1. 類別ID ( CLSID ):用來表示COM元件 ( DDL 或 EXE 檔案 ) 的ID

2. 介面ID ( IID ):用來表示要建立的物件的類別ID