COM里面定义枚举,客户端不知为啥,识别不了?

dreamgis 2015-01-12 05:15:38
首先,我并不知道怎么定义,是照着别人代码写的,就是在.idl文件里面定义,但客户端不知道为什么识别不了。
是不是哪里还要进行一下设置啊?
或者,有朋友介绍一下com里面怎么定义枚举更好, 感谢先!


typedef
[
uuid(2C20E35B-4337-4abb-BE50-975854C64768),
helpstring("几何要素类型")
]
enum GeometryType
{
[helpstring("未知类型")] gtUnknown = 0x0000,
[helpstring("点")] gtPoint = 0x0001,
[helpstring("点集")] gtPoints = 0x0002,
[helpstring("线段")] gtSegment = 0x0003,
}GeometryType;
...全文
303 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreamgis 2015-01-19
  • 打赏
  • 举报
回复
终于解决了。枚举定义没有问题,但要C#端可以识别,必须要在某个接口函数中当作参数,至少用一次。当作属性没试过,估计也是可以的。 猜想原因是,编译idl文件的时候,如果接口里面没有用到,则不会编译到DLL里面去。菜鸟的水平有限,如果有高人看见帖子,期待更专业的解答。 可以结贴了。
ojc520520 2015-01-16
  • 打赏
  • 举报
回复
up
dreamgis 2015-01-16
  • 打赏
  • 举报
回复
up
dreamgis 2015-01-16
  • 打赏
  • 举报
回复
typedef enum tagFontAlign
{
[helpstring("Left")]Left=0,
[helpstring("Center")]Center=1,
[helpstring("Right")]Right=2,
}FontAlign;
这样写,还是不行
dreamgis 2015-01-15
  • 打赏
  • 举报
回复
问题仍未解决。。。。。。。 我直接拷贝别人的过来,放到idl的相同位置,还是不行。还问了他,还有没有其它地方要设置,他回答说没有。那我这里为什么不行啊 help
dreamgis 2015-01-15
  • 打赏
  • 举报
回复
引用 4 楼 lgstudyvc 的回复:
没看懂你在说啥! com里枚举定义和客户端有啥关系? 识别不识别是你控件和客户接口定义 还是我没看懂说的
不好意思,是我没有描述清楚。 我是用vc++写的com,然后用C#调用,客户端就是指的调用com的C#程序。 com里面定义的接口和CoClass在C#端都能识别(显示为已定义的类型)。但定义的枚举却死活是未定义类型, 求好心人援助啊?
dreamgis 2015-01-15
  • 打赏
  • 举报
回复
不好意思,是我没有描述清楚。 我是用vc++写的com,然后用C#调用,客户端就是指的调用com的C#程序。 com里面定义的接口和CoClass在C#端都能识别(显示为已定义的类型)。但定义的枚举却死活是未定义类型, 求好心人援助啊?
lgstudyvc 2015-01-14
  • 打赏
  • 举报
回复
没看懂你在说啥! com里枚举定义和客户端有啥关系? 识别不识别是你控件和客户接口定义 还是我没看懂说的
dreamgis 2015-01-14
  • 打赏
  • 举报
回复
顶起来,虽然是过时技术,但领导要求做啊 求好心人帮忙
真相重于对错 2015-01-12
  • 打赏
  • 举报
回复
com 要为外部使用枚举类型不是那么简单,atl已经简化了一部分 你可以看看下面的帮助 http://msdn.microsoft.com/zh-cn/library/x416d0xc.aspx
oyljerry 2015-01-12
  • 打赏
  • 举报
回复
包含了idl自动生成的h,c文件没

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧