请问我再typedef50.h中定义了
// 线对象
typedef struct tagLINEOBJECT {
char cType; // 类型
char cTypeDt; // 详细类型
// 显示道路:0-无、1-隧道、2-当前地图中心所在的道路
// 路径线:0-已行驶,1-未行驶。
char cZLevel; // 层级
char cRever; // 对齐
long nCount; // 点个数
MAPPOINT *pPntArray; // 点坐标
} LINEOBJECT, *PLINEOBJECT;// 面对象
typedef struct tagAREAOBJECT {
char cType; // 类型
char cRever; // 对齐
short siRever; // 对齐
long nCount; // 点个数
MAPPOINT *pPntArray; // 点坐标
} AREAOBJECT, *PAREAOBJECT;
这些结构体,然后把文件加载到工程中,在ATL工程中使用这些结构体如下
[id(2), helpstring("method WU_DrawsimulationViewLine")] HRESULT WU_DrawsimulationViewLine([in] HWND hwnd,[in] HDC hdc,[in] PATHOBJECT *vpPathObject);
// [id(2), helpstring("method WU_DrawsimulationViewLine")] HRESULT WU_DrawsimulationViewLine([in] HWND hwnd,[in] HDC hdc,[in] long *vpPathObject);
[id(3), helpstring("method WU_DrawArea")] HRESULT WU_DrawArea([in] HDC hdc,[in] AREAOBJECT *ppAreaObj,[in] int iiAreaNum);
[id(4), helpstring("method WU_DrawLine")] HRESULT WU_DrawLine([in] HDC hdc,[in] LINEOBJECT *ppLineObj,[in] int iiLineNum);
[id(5), helpstring("method WU_DrawPoint")] HRESULT WU_DrawPoint([in] HDC hdc,[in] POINTOBJECT *ppPointObj,[in] int iiPoinNum,[in] int FFlag);
结果在链接是Overview.idl文件中出错了
出错提示:error MIDL2025 : syntax error : expecting a type specification near "PATHOBJECT"
请问这样怎么解决?
// 线对象
typedef struct tagLINEOBJECT {
char cType; // 类型
char cTypeDt; // 详细类型
// 显示道路:0-无、1-隧道、2-当前地图中心所在的道路
// 路径线:0-已行驶,1-未行驶。
char cZLevel; // 层级
char cRever; // 对齐
long nCount; // 点个数
MAPPOINT *pPntArray; // 点坐标
} LINEOBJECT, *PLINEOBJECT;// 面对象
typedef struct tagAREAOBJECT {
char cType; // 类型
char cRever; // 对齐
short siRever; // 对齐
long nCount; // 点个数
MAPPOINT *pPntArray; // 点坐标
} AREAOBJECT, *PAREAOBJECT;
这些结构体,然后把文件加载到工程中,在ATL工程中使用这些结构体如下
[id(2), helpstring("method WU_DrawsimulationViewLine")] HRESULT WU_DrawsimulationViewLine([in] HWND hwnd,[in] HDC hdc,[in] PATHOBJECT *vpPathObject);
// [id(2), helpstring("method WU_DrawsimulationViewLine")] HRESULT WU_DrawsimulationViewLine([in] HWND hwnd,[in] HDC hdc,[in] long *vpPathObject);
[id(3), helpstring("method WU_DrawArea")] HRESULT WU_DrawArea([in] HDC hdc,[in] AREAOBJECT *ppAreaObj,[in] int iiAreaNum);
[id(4), helpstring("method WU_DrawLine")] HRESULT WU_DrawLine([in] HDC hdc,[in] LINEOBJECT *ppLineObj,[in] int iiLineNum);
[id(5), helpstring("method WU_DrawPoint")] HRESULT WU_DrawPoint([in] HDC hdc,[in] POINTOBJECT *ppPointObj,[in] int iiPoinNum,[in] int FFlag);
结果在链接是Overview.idl文件中出错了
出错提示:error MIDL2025 : syntax error : expecting a type specification near "PATHOBJECT"
请问这样怎么解决?
把结构体改成这样
typedef
[
uuid(123456A0-33EB-11D4-A13A-BE2573A1120F),
]
struct tagLINEOBJECT {
LONG cType; // 类型
LONG cTypeDt; // 详细类型
// 显示道路:0-无、1-隧道、2-当前地图中心所在的道路
// 路径线:0-已行驶,1-未行驶。
LONG cZLevel; // 层级
LONG cRever; // 对齐
LONG nCount; // 点个数
// MAPPOINT *pPntArray; //这里不好意思,MAPPOINT这是神奇类型呀??数组的话的用SAFEARRARY,结构体参考这种类型的定义,但不能定义成指针类型!!!!
} LINEOBJECT;
在IDL的类型最好对齐,玩BYTE可能会编译不过去
COM规范类型简介:
万能类型VARIANT
字符串BSTR
数组SAFEARRAY