关于用mfc(c++)调用wpf(C#)编写的dll,实现界面消息回调的方法。

作者 : 开心源码 本文共901个字,预计阅读时间需要3分钟 发布时间: 2022-05-13 共150人阅读

关于用mfc(c++)调用wpf(C#)编写的dll,实现界面消息回调的方法。

    这几天有一个小项目。使用wpf制作界面,其余实现由mfc实现,就想到一个方案能不能使用wpf编写dll供mfc调用创立界面而后消息解决由mfc来实现,也就是wpf只负责页面显示和发送界面消息,而其余所有事情都交给mfc实现。

    经过一番折腾,的确可行。但在途中遇到两个问题花了少量时间。第一个问题是,环境配置问题。第二个问题是,如何实现消息回调。

    本人使用的是vs2019。

    首先处理第一个问题,答案如下:

    首先配置mfc的环境,右击处理方案下的mfc项目–>属性,如图选择左侧<高级>,将<公共语言运行时支持>改成<公共语言运行时支持(/clr)>,将<MFC的使用>改成<在共享DLL中使用MFC>

    而后,如图,将<代码生成>中的运行库改成<多线程调试DLL(/MDd)>

   这样配置就完成了,而后再将你编写的dll放入当前项目文件夹,假如要调试运行,则需要将dll同时放入生成应用程序的文件夹。在需要使用dll的代码前使用 #using “XXXX.dll”。

    对于第二个问题,比方我创立了一个名为MainWindow的窗口,里面包含一个Button,当它按下时我想由mfc的代码来解决这个消息,要如何编写代码呢,下面是一种处理方案:

    1.wpf(C#)中的代码:

    代码关键是定义一个delegate函数CallBack(),而后在MainWindow类中公告一个CallBack类型的变量,待mfc中赋值,而后在回调函数中直接调用这个公告的委托变量。(本人C#比较渣,表述如有问题请见谅)

    2.mfc(C++)中的代码

    看了wpf的代码,我们应该知道现在只需在mfc中实现一个CallBack()函数,而后传递给wpf的MainWindow类中的myCallBack变量,不过这里的细节是如何将mfc实现的CallBack()函数传入wpf呢,请看下面代码。

注意,C++创立C#对象需要使用gcnew而不是new。

这里使用CallBack创立一个MessageBox,经过测试,代码可以正常运行。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 关于用mfc(c++)调用wpf(C#)编写的dll,实现界面消息回调的方法。

发表回复