我在ATL中的IDL文件中通过
typedef
[
uuid(3131824A-3D6D-41F9-B42B-8AA6677525F9),
version(1.0),
helpstring("自定义数据类型")]
struct PT
{
ULONG x;
ULONG y;
}PT;library ShowFont3Lib
{
importlib("stdole2.tlb");
struct PT;//自定义数据类型...........................
...................
这样来自定义了数据类型,
然后在我的接口中来使用这个数据类型,
在ATL编译没有报错,但是在测试的时候就报错!!!
error C2061: 语法错误 : 标识符“PT”
1>g:\项目\mfc_项目\testshowfont\testshowfont\colorfont3.h(152) : error C2061: 语法错误 : 标识符“PT”
1>g:\项目\mfc_项目\testshowfont\testshowfont\colorfont3.h(138) : error C2065: “newValue”: 未声明的标识符
怎么来使用啊??
高手指点!!!
解决方案 »
- ToolkitPro1513vc60S.lib 急需 大家帮帮下找找
- MYSQL,帮写个SQL语句,如何筛选部分表
- 如何从一张BMP图片中复制出一块儿?(附有源代码)
- 程序中能否控制IE浏览器变更浏览地址??
- 请教一下怎么把.txt文本里的内容读到access数据库中阿?
- 一打开文件对话支持多选,但如何能获得选择的所有文件名呢?
- 我调用一个dll时,用例子.c的加入工程可以编译,如果将例子.c的代码拷到CPP文件中编译不行,为什么?
- 象CListBox这样的控件,是怎样维护自己的成员的?
- 窗口类的设置问题?
- 出道题。
- visual studio c++中mfc应用程序入门(望高手指点迷津)
- 想做一个类似qq提示消息的界面,但是多条消息在一个窗口中显示
{
ULONG x;
ULONG y;
}PT;
{
importlib("stdole2.tlb"); struct PT
{
ULONG x;
ULONG y;
};
不知道如何处理这个情况!!!
[propput, id(15), helpstring("属性 PicCoordinate")] HRESULT PicCoordinate([in] ULONG uItemId, [in] PT pt);
};
我在接口里面使用到了这个数据类型!
在测试的MFC程序中,报错无法找到这个数据类型的声明!
{
ULONG x;
ULONG y;
}PT;
PT pt;
pt.x = 110;
pt.y = 110;
m_ColorFont.put_TextCoordinate(0,pt);
{
static BYTE parms[] = VTS_UI4 VTS_UNKNOWN ;
InvokeHelper(0xd, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, uItemId, newValue);
}
这个是MFC生成包装类!!!
[propget, id(13), helpstring("属性 TextCoordinate")] HRESULT TextCoordinate([in] ULONG uItemId, [out, retval] PT* pt);
[propput, id(13), helpstring("属性 TextCoordinate")] HRESULT TextCoordinate([in] ULONG uItemId, [in] PT pt);
这是我接口方法的定义!!!
pt.x = 10;
pt.y = 10;
m_ColorFont.put_TextCoordinate(0,pt);
调用代码
MFC中定义的PT
#ifndef GLOBAL_H
#define GLOBAL_H 0x2009typedef struct PT
{
ULONG x;
ULONG y;
}PT;
#endif
IDL中的定义!!
typedef
[
uuid(3131824A-3D6D-41F9-B42B-8AA6677525F9),
version(1.0),
helpstring("自定义数据类型")]
struct PT
{
ULONG x;
ULONG y;
}PT;
{
long lElement;
} MYSTRUCT;[id(1), helpstring("method test")] HRESULT TestStruct([in] MYSTRUCT myStruct)STDMETHODIMP CWzd::Structs1(MYSTRUCT myStruct, IUnknown *myClass)
{}
//////////////
客户端
MYSTRUCT myStruct;
pPtr->Structs1(myStruct);