请问 该如何将枚举类型的参数传递给c++函数

zjfgj 2000-08-15 01:39:00
第三方控件$$$.dll $$$.h 中
typedef enum
{
red,blue,green
}
MCOLOR, *DB_MCOLOR_PT;
...

FT_RETCODE ChgColor(FT_HANDLE ftContext,MCOLOR ftColor);
...


代码如下:
...
typedef FT_RETCODE _stdcall(*lgChgColor)(FT_HANDLE,MCOLOR);
lgChgColor ftChgColor;
FT_RETCODE rc;
MCOLOR SelColor;
SelColor=red;
ftChgColor=(lgChgColor)GetProcAddress(hdlDB,"ChgColor");
if(ftChgColor!=NULL)
{
rc=ftChgColor(dbContext,SelColor);
//函数执行报告SelColor参数不合适,换成以下就可以.
// rc=ftChgColor(dbContext,red);
...
}

请问 该如何将枚举类型的参数传递给c++函数


...全文
1265 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qianxh 2000-08-18
  • 打赏
  • 举报
回复
能否将你的第三方软件email给我,大家一起参详。
qianxh@fm365.com
zjfgj 2000-08-18
  • 打赏
  • 举报
回复
根据qianxh 的提示改变函数调用方法还是不行
而 根据qianxh 的提示在头文件中重新定义red等的初始值 也是不行
请各位再帮帮忙,非常感谢!!
qianxh 2000-08-17
  • 打赏
  • 举报
回复
只要正确包含了头文件,应该不会有你说的问题。
将以下几句
typedef FT_RETCODE _stdcall(*lgChgColor)(FT_HANDLE,MCOLOR);
lgChgColor ftChgColor;
ftChgColor=(lgChgColor)GetProcAddress(hdlDB,"ChgColor");
换成
FT_RETCODE (__stdcall * ftChgColor)(FT_HANDLE,MCOLOR);
ftChgColor=(FT_RETCODE(__stdcall *)(FT_HANDLE,MCOLOR))GetProcAddress(hdlDB,
"ChgColor");
试试看。
另:_stdcall 还是 __stdcall ?
wxz 2000-08-16
  • 打赏
  • 举报
回复
枚举类型的数编译以后会用一个整数代替,第三方控件的枚举类型的参数在其内部其实成了某一个整数,所以CB给出信息"参数不合适"是有道理的.看看是不是定义了red等的初始值
zjfgj 2000-08-16
  • 打赏
  • 举报
回复
有人指点说,c++build 不认识第三方控件中的枚举常数
要使他认识必须用GUID,请问GUID该如何定义?
Wingsun 2000-08-15
  • 打赏
  • 举报
回复
参数传递的方法没有错误,是对的,我的函数是如下使用的:
typedef enum ValueType{DateTime,Number}TItemType;
AnsiString __fastcall CheckBetweenFormat(AnsiString src,TItemType Type);
TItemType mytype;
mytype=DateTime;
CheckBetweenFormat("1999-9-9 2000-2-2",mytype);
是否是你给出的参数的值,在函数中判断为非法的值.或者你的变量名称有冲突。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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