c#改写c++自定义消息处理函数遇到的困难,求指导

LL223851 2015-06-02 06:13:52
dllimport引入dll文件
dll中有个函数getmsg()在源c++程序中是通过自定义消息函数调用的,大概代码如下:
在dll的头文件中宏定义
#ifndef WM_RECV
#define WM_RECV WM_APP+100
#ENDIF
事例程序的头文件中自定义了一个消息函数
//{{AFX_MSG(CWltestDLG)
afx_msg void onInitDialog()
.
.
.
.
//}}AFX_MSG
afx_msg lresult onrecv(wparam,lparam)
DECLARE_MESSAGE_MAP()

现在我用c#实现了onrecv的功能,只是这个功能怎么去触发,在c#中重写了WndProc函数来接收消息触发onrecv,使用SendMessage函数来发送消息,每次必须先发送消息才能触发,而且程序窗口必须是当前活动窗口才能触发,现在问题是如何像串口通信或网络通信那样,自动触发onrecv函数呢?
...全文
147 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LL223851 2015-06-03
  • 打赏
  • 举报
回复
结构体我已经注意到了,变量大小,对齐方式等我用c#都实现了,等有空的时候我联系一下开发者,这是一个底层通信平台,我自己写的程序需要每次手动发送消息才能收到平台给我的转交给我的信息,这几天我研究了,这个通信平台应该在收到数据后在通知我的进程收到数据了,应该是平台给我转发数据和主动发送消息给我让我的进程去取数据
jiqiang01234 2015-06-03
  • 打赏
  • 举报
回复
当然会影响,写dll的人看来没怎么写过给别的语言调用dll的经验。c#如果要使用,也必须要用dll查看器显示的那种被改编后的函数名称。如果参数中有结构体,还需要注意内存对齐问题。最好是让那个写dll的人,重新把dll改为c接口函数的dll
jiqiang01234 2015-06-03
  • 打赏
  • 举报
回复
对于dll的使用,只需要看.h文件里导出了那些函数可以使用,不需要关心内部是怎么实现的。dll导出了什么函数,就调用什么函数。
LL223851 2015-06-03
  • 打赏
  • 举报
回复
这个dll文件不知道开发者是怎么回事,函数名在头文件里面是正常的,dllimport引入的时候发现无法找到入口,后来用dll查看器发现每个函数名都以“?”开始,以@等乱七八糟的字符结束,只有中间的是函数名,不知道这会不会影响在c#中的调用

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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