Qt 调用MFC dll,动态库中有界面

一、创建MFC 动态库工程

下一步

创建

点击确定

二、创建接口

这个是系统创建的,改成自己的接口。

头文件:

复制代码
#ifndef __WEB_ENGINE__
#define __WEB_ENGINE__

#ifdef __cplusplus
extern "C" {
#endif

	__declspec(dllexport) bool __stdcall LoadUrl(const char* pUrl);

#ifdef __cplusplus
}
#endif

#endif

源文件:

复制代码
#include "pch.h"
#include "WebView.h"
#include "ManageWebView.h"

__declspec(dllexport) bool __stdcall LoadUrl(const char* pUrl)
{
	if (!pUrl) {
		return false;
	}

	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	ManageWebView dlg;
	dlg.DoModal();

	return true;
}

截图:

三、mfc 动态库中创建界面

右击项目----》添加----》资源----》

选择对话框,点击新建

出现界面

四、给界面添加类,进行绑定

右击界面----》选择添加类

点击确定。

在资源试图中打开界面

右击对话框,选择类向导,添加事件

五、解决编译报错

添加resource.h,解决IDD_DIALOG1无法识别的问题

六、 说明

QT调用模态对话框属于资源类,需要在导出函数中开头增加

复制代码
AFX_MANAGE_STATE(AfxGetStaticModuleState());

要不然会出现:

同时,该过程不支持WM_CREATE,同样的也不支持非模态调用,因为非模态调用会调用Create函数 pWidget->Create(IDD_DIALOG1, NULL),相当于非模态调用了WM_CREATE

相关推荐
君顾14 小时前
上海24小时自助健身房系统开发实战指南:从架构设计到落地部署
java·开发语言·健身房
香菜TTT5 小时前
大模型上下文协议(MCP):AI 应用的“USB-C”接口技术
开发语言·人工智能·经验分享
aramae5 小时前
模拟实现strlen()函数 (C语言)
c语言·开发语言·后端
Quz6 小时前
QML 常见的四种导航布局
qt
jimy16 小时前
readelf 查看“派生类”的vtable符号
开发语言·c++
ctlover7 小时前
排序与查找算法详解
开发语言·python
YYYing.7 小时前
【C++进阶系列 (七)】C++ RTTI 深度剖析:从 typeid 到 dynamic_cast 的底层之旅
开发语言·c++·c/c++·rtti
江湖人称菠萝包7 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter2-GUI应用程序设计基础
笔记·qt·qt5
nvvas8 小时前
Java 入门(四):数组——数据的集合管理
java·开发语言
重生的黑客8 小时前
Qt 常用控件精讲(1):QWidget 核心属性全解 —— 从 geometry 到 qrc 与 QSS
c++·qt·qwidget·qss·常用控件