zoukankan      html  css  js  c++  java
  • 如何在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) void
    2 
    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 MsgTest
    2 {
    3     public const int MSG_USER = 0x400;
    4     public const int MSG_TEST = MSG_USER + 0x100;
    5 }

    7. 添加Messager类,类中代码如下:

    1 public class Messager
    2 {
    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}
    Msg:{1}
    WParam:{2}
    LParam:{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发送消息”,效果如下:

    clip_image002

    转载须知:

    请尊重本人知识产权和劳动成果,本文可自由转载,请注明出处:

    博客网址:http://www.cnblogs.com/zs8861/

    联系邮箱:117711668@qq.com

    欢迎交流!

  • 相关阅读:
    How to create jar for Android Library Project
    Very large tabs in eclipse panes on Ubuntu
    64bit Ubuntu, Android AAPT, R.java
    Linux(Ubuntu)下如何安装JDK
    Configure xterm Fonts and Colors for Your Eyeball
    建立、配置和使用Activity——启动其他Activity并返回结果
    建立、配置和使用Activity——使用Bundle在Activity之间交换数据
    建立、配置和使用Activity——启动、关闭Activity
    建立、配置和使用Activity——Activity
    异步任务(AsyncTask)
  • 原文地址:https://www.cnblogs.com/zs8861/p/4262464.html
Copyright © 2011-2022 走看看