阿修--一直在自我修炼,希望能得到百年道行

湖南微软开发者俱乐部

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

   很久没有写些东西了,发现不写很久就会忘记一些技巧性的东西,然后又要翻阅一堆堆的代码区查,还要试,很囧~~~~

  前阵在做一个海外项目时第三方合作厂家一起开发个文件传送的东东,NND,他们只会用VC++,居然说COM也不会玩,晕死,让我玩找窗口的游戏,这年头居然还有这样的人,真的是远古时代的。

  下面是他们给我的VC++调用DEMO,要我用.NET来实现,真的很看得起我

 

代码

 

  里面自定义了一个FileTransferCommand结构体,还导入了一个Windows的COPYDATASTRUCT结构体,这TMD .NET里面根本没,都是什么什么.H文件里面的。

代码

typedef struct tagCOPYDATASTRUCT {
  DWORD dwData; 
  DWORD cbData; 
  PVOID lpData; 
} COPYDATASTRUCT;

 

  这是Winuser.h里面定义的,要用.NET实现必须把这些结构体翻译成VC++看的懂的,因为VC++里面就是指针、位、字节什么的,它就没有管你CLR里面struct什么样子,因为在C/C++中struct只是一个简单的数据集合,甚至C的Struct不能包含函数的,一些C++代码也难看见在Struct里面写函数的,而.NET里面Struct相对很少使用,因为Struct在.NET中很像一个Class了,没有太多约束。所以导致了Struct的失真。其实说白了就是.NET对结构体的序列化、C++是否可成功反序列化的问题。

  下面是我对上面代码的.NET翻译,已经运行成功,希望对大家一些写类似代码有帮助。

 

代码

 

posted on 2009-12-02 11:18  阿修  阅读(1521)  评论(0编辑  收藏  举报