首页 > 代码库 > 如何在MFC DLL中向C#类发送消息
如何在MFC DLL中向C#类发送消息
如何在MFC DLL中向C#类发送消息
一、 引言
由于Windows Message才是Windows平台的通用数据流通格式,故在跨语言传输数据时,Message是一个不错的选择,本文档将描述如何在MFC DLL中向C#窗口类发送消息。
二、 实现过程
1. 新建一个基于MFC的DLL工程,在工程作用是用于生成Dll库函数;
2. 在该工程中新增一个类,CMessager;
3. 在头文件中添加代码如下:
1 #define ZS_API extern "C" _declspec (dllexport) void2 3 ZS_API _sendMessageToCS(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
4. 在CPP文件中添加代码如下:
1 ZS_API _sendMessageToCS(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)2 {3 SendMessage(hWnd, Msg, wParam, lParam);4 }
5. 新建一个C#的WindowsApplication的测试工程TestMfcDllMessage;
6. 添加MsgTest普通类,类中代码如下:
1 public class MsgTest2 {3 public const int MSG_USER = 0x400;4 public const int MSG_TEST = MSG_USER + 0x100;5 }
7. 添加Messager类,类中代码如下:
1 public class Messager2 {3 [DllImport("MfcDllSendMessage.dll", EntryPoint = "_sendMessageToCS", CharSet = CharSet.Auto)]4 5 public static extern void _sendMessageToCS(IntPtr hWnd, UInt32 Msg, UInt32 wParam, UInt32 lParam);6 }
8. 给Form1添加一个“调用MFC DLL发送消息”按钮,双击在事件响应中添加如下代码:
1 private void button1_Click(object sender, EventArgs e)2 {3 Messager._sendMessageToCS(this.Handle, MsgTest.MSG_TEST, 25, 13);4 }
9. 在Form1类中重写默认窗口过程,代码如下:
1 protected override void DefWndProc(ref Message m) 2 { 3 switch (m.Msg) 4 { 5 case MsgTest.MSG_TEST: 6 string strInfo = string.Format("HWnd:{0}\r\nMsg:{1}\r\nWParam:{2}\r\nLParam:{3}", m.HWnd.ToString(), m.Msg.ToString(), m.WParam.ToString(), m.LParam.ToString()); 7 MessageBox.Show(strInfo); 8 break; 9 10 default:11 base.DefWndProc(ref m);12 break;13 }14 }
10. Build整个工程
三、 实现效果
单击“调用MFC DLL发送消息”,效果如下:
转载须知:
请尊重本人知识产权和劳动成果,本文可自由转载,请注明出处:
博客网址:http://www.cnblogs.com/zs8861/
联系邮箱:117711668@qq.com
欢迎交流!
如何在MFC DLL中向C#类发送消息
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。