MFC从DLL导入对话框

马纳塔

我有两个项目:一个MFC .exe和一个MFC .dll。我在DLL中定义了MFC对话框。它具有与之关联的资源,并且还具有CToolboxDiag从派生的类CDialog

该对话框有一个简单的按钮,单击该按钮会显示一个消息对话框。

void CToolboxDiag::OnBnClickedButton()
{
   MessageBox(_T("Test"), _T("T"));
}

我可以将资源从DLL导出到代码中,并CDialog使用以下代码创建外观正确的标准

CDialog *diag = new CDialog;

HINSTANCE hClientResources = AfxGetResourceHandle();

//Tell the client to use the .DLL's resources
AfxSetResourceHandle(dll);

// resource_id is the resource_id in the DLL
diag->Create(resource_id, NULL);

//Restore the client application resource handle
AfxSetResourceHandle(hClientResources);

但这只会导致对话框出现,但是单击控件(即按钮)时不会执行任何操作,因为它没有CToolboxDiag与.exe中定义的链接

我想导出对话框(带有按钮代码),而不必将类定义导出到.exe。换句话说,我想导出一个功能齐全的对话框,包括其按钮动作,而无需CToolboxDialog在我的.exe上定义,以便可以将其完全模块化。我该怎么办?

xMRi

这不能以这种方式工作。资源模板没有直接连接到DLL中的代码。您的代码刚刚创建了一个“空” CDialog类,没有所有处理程序,需要默认处理程序(OnOk,OnClose ...)

因此,您需要创建对象CToolboxDiag,并且这必须在对话框代码所在的位置进行。这在DLL中。

最简单的方法是导出一个函数,该函数仅在DLL中创建对话框,然后将CDialog *返回给您的应用程序。

请注意,这仅允许使用,并且在使用MFC的DLL共享版本时不会出现问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

防止双击MFC对话框按钮

来自分类Dev

设置MFC对话框的位置

来自分类Dev

MFC C ++中的对话框

来自分类Dev

在MFC应用程序中加载包含Windows对话框的dll

来自分类Dev

在MFC对话框中填充组合框

来自分类Dev

在MFC对话框中绘制对话框边距

来自分类Dev

基于 MFC 对话框的应用程序无法两次调用对话框

来自分类Dev

MFC单击并移动/拖动对话框窗口

来自分类Dev

查找MFC对话框的当前位置

来自分类Dev

如何在MFC对话框中添加关闭按钮

来自分类Dev

添加syslink不显示MFC对话框

来自分类Dev

MFC对话框中未显示上标4

来自分类Dev

MFC对话框错误中的C ++多线程

来自分类Dev

如何在MFC对话框中使用OnDraw

来自分类Dev

使用Mfc对话框显示.bmp图像时出错

来自分类Dev

如何在MFC对话框中添加关闭按钮

来自分类Dev

子对话框-SetWindowTextA或SendMessageA使程序崩溃-MFC

来自分类Dev

如何移动MFC项目的对话框

来自分类Dev

如何在MFC中正确继承对话框

来自分类Dev

将.txt导入数组,输出W /对话框

来自分类Dev

启动画面被阻止从 ui 对话框导入

来自分类Dev

在主对话框中嵌入对话框并在MFC中单击按钮进行切换

来自分类Dev

如何根据在父对话框中设置的变量在子MFC对话框中显示值?

来自分类Dev

角形对话框

来自分类Dev

出现对话框

来自分类Dev

JavaFX对话框

来自分类Dev

Inkscape对话框

来自分类Dev

单击对话框

来自分类Dev

JavaFX对话框