请问各位高手!如何在IDL中使用平时常用的类型!!!!!!!

waterflier 2002-05-19 03:57:31
在Windows环境下编程我可以不用MFC,但我总不能不用SDK吧,那些在windows.h中定义的数据类型重是频频的出现在接口函数中。原来我一直使用强制类型转换,在使用接口函数时把HWND等等统统转为long,但是,今天我再也受不了了!!!!!用到了一个复杂的windows定义的结构,我再也不想加大自己的劳动量了。各位高手!有没有什么好办法可以import某个东西就可以方便的使用windows的类型,或是其他的方法,我是再也不想进行强制类型转换了!
...全文
64 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hustzxq524 2002-05-22
  • 打赏
  • 举报
回复
事先声明我是菜鸟
我看是不是尽量不要用接口函数来传递这些跟窗口有关的结构指针,我觉得COM组件应该是比较独立的功能模块,接口不应该定义的太过复杂,而组件内部怎么实现都可以,如果照你说的这样复杂,我觉得还不如做在一起算了.
能不能把你设计组件的思路讲一下,学习学习.
waterflier 2002-05-21
  • 打赏
  • 举报
回复
我知道,我只是不想定义windows的类型。有的很复杂
qubird 2002-05-21
  • 打赏
  • 举报
回复
IDL可以用自定义数据类型,你在IDL 中定义再编译,就能用了;
编译时会生成PROX/STUN,远程客户也能用
waterflier 2002-05-20
  • 打赏
  • 举报
回复
duanrain(dyl),我不太懂你的意思,不过觉得你言下之义是说制作进程内组件可以不要使用idl定义接口吧?不用idl就意味这我无法方便的使用ATL开发组件。。这简直就是让人无法忍受!
我以前从不直接使用结构体,都是在参数中使用指向结构的指针(idl定义中为long)
比如说:HRESULT Foo(RECT rect)
定义在idl中时我是这样写的(省去修饰部分)
HRESULT Foo(long rect)
客户调用时
hResult=Foo((long)(&m_rect))
组件处理时先
HRESULT Foo(long rect)
{
RECT* pRect=(RECT*)rect;
pRect->top=....
....
}
太痛苦了!!!!!!!
cygroup 2002-05-20
  • 打赏
  • 举报
回复
在IDL中可以使用自定义数据类型的,称为UDT(User Defined Data)
library KNOWLEDGELIBLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
typedef struct {
int nX;
char* Y;
}MyStruct;
};
waterflier 2002-05-20
  • 打赏
  • 举报
回复
baojun(探索者),自己声明自定义数据类型很麻烦阿,比如说
typedef long HWND,可是实际上你在调用接口函数时直接把HWND传过去会得到一个警告,而且可能引起很多错误
waterflier 2002-05-20
  • 打赏
  • 举报
回复
好的,我的msn是waterflier@msn.com
duanrain 2002-05-20
  • 打赏
  • 举报
回复
太痛苦了,刚才长篇大论,结果发出失败,都没了,快疯了。我实在不想在写一边已经写过的东西,挺伤心的。waterflier(水行鸟) 和我直接联系吧,我的msn是duanrain@hotmail.com
提示一句:不用idl,一样可以用atl哦
baojun 2002-05-20
  • 打赏
  • 举报
回复
你可以在IDL文件中声明自己定义的数据类型。
duanrain 2002-05-19
  • 打赏
  • 举报
回复
VARIANT无法解决结构类型的问题,但是waterflier (水行鸟) ,你为什么不反思一下,你为什么在idl中需要经常使用结构体呢?提醒一句,在一个工程中,大量使用idl定义非模块(dll,exe)之间的接口,不是一个好的现象。
kingzai 2002-05-19
  • 打赏
  • 举报
回复
使用CComVariant呀

3,245

社区成员

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

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