显示MFC DLL中的对话框
Show dialog from MFC DLL
我加载了表单,但只加载了没有功能的按钮
HMODULE hModule = LoadLibrary(L"Tools.dll");
if (hModule != NULL)
{
AfxSetResourceHandle(hModule);
CDialog dgl(MAKEINTRESOURCE(199), NULL);
dgl.DoModal();
}
那么我如何加载表单的全部函数并且我没有DLL源代码
要从MFC dll
显示对话框,就像场景一样-您已经在DLL中导出了函数,并从该函数中调用DoModel()
。该模板实际上存储在DLL模块中。您需要切换模块状态才能使用当前句柄。您可以使用:
AFX_MANAGE_STATE(AfxGetStaticModuleState());
AFX_MODULE_STATE AfxGetStaticModuleState()
->The AFX_MODULE_STATE
结构包含模块的全局数据,即模块状态中被推送或弹出的部分。
IN DLL代码如下:
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CMyDlg objMyDlg;
iRet = objMyDlg.DoModal();
只有当您确定对话框类实现是基于MFC的,并且该类是从Tools.dll导出的时,这才有可能。您可以尝试使用Dependency Walker实用程序检查.dll
请注意编译器损坏了构造函数名称。这是我在下面的声明中得到的。
class __declspec(dllexport) TestDialog : public CDialog
{
public:
TestDialog()
:CDialog(10)
{
}
};
混乱的构造函数名称:_7测试对话框@@6B@
也许您将能够根据检查结果重新创建对话框类标题。您还应该确保Tools.dll和应用程序的MFC版本相同。
相关文章:
- 如何在Qbutton的帮助下更改Q对话框的宽度
- 当对话框被接受时,如何用参数调用槽
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- 如何多次询问来自QML对话框的输入?
- 选择文件对话框错误
- 自定义对话框(源自QDialog)不会关闭(Android)
- 如何在 MFC 对话框中使用 OnDraw
- 在C++中创建文件夹选取器对话框的最简单方法是什么?
- 从资源视图访问对话框时出现问题
- 如何检测窗口当前是否正在运行模式对话框?
- "最小化"按钮不会出现在 MFC 对话框中
- 如何获取QNetworkConfiguration UserChoice对话框?
- 添加新对话框后,MFC 应用程序启动失败并"DLL Initialization Failed"
- 在DLL中关闭Win32对话框时(来自WPF应用程序)时例外
- MFC C++语言资源DLL-仅覆盖某些对话框
- 线程退出时 DLL 中的 MFC 无模式对话框被销毁
- 来自非托管 win32 dll 的 C# 运行对话框
- 使用MFC对话框编辑器添加具有仅资源DLL的事件处理程序
- 无法从 MFC DLL 创建模式对话框
- 显示MFC DLL中的对话框