Visual Studio 2013 DLL 项目:运行 DLL 时不显示对话框窗体
Posted
技术标签:
【中文标题】Visual Studio 2013 DLL 项目:运行 DLL 时不显示对话框窗体【英文标题】:Visual studio 2013 DLL Project: Dialog form not displayed while running the DLL 【发布时间】:2020-09-01 05:18:28 【问题描述】:我有一个 Visual Studio 2013 C++ DLL 项目。
构建 DLL 工作正常,除了一点:缺少应在 DLL 启动时打开的交互式表单,并且它应该响应/来自 DLL
我曾提到this link
我试过了: 右击项目->选择添加->资源->对话框
之后,Visual Studio 选项卡中出现一个空白对话框,并列在 Resources 文件夹中
-
我认为简单地编译项目会在运行 DLL 时显示空对话框。
但是当我运行 DLL 时,即使是空的对话框也不显示
我错过了什么吗?
-
另外,C++ 是否足以向表单/对话框添加功能?或者,像 C# 这样的任何其他语言?
(以便我可以添加事件处理功能)
【问题讨论】:
1) 窗口和对话框不会自行打开,您需要添加代码才能做到这一点。请参阅Using Dialog Boxes 的概述并决定是否需要模态对话框和非模态对话框,然后您可以找到任何一种情况的代码示例以开始使用。 2) Win32 是一个 C API,所以你当然可以用 C 或 C++ 做任何事情。 @dxiv 谢谢,我也想了解表单 “Forms”不是一个定义明确的术语,“Windows Forms”是一个通常不与 C++ 关联的 .NET 平台。如果你只想要一个基于窗口或对话框的 GUI,有很多 VC++ samples 可以开始。 【参考方案1】:我建议您可以使用 MFC 为表单/对话框添加功能。
步骤如下:
创建一个名为“CTestDll”的 MFC DLL,然后选择 Regular DLL using shared MFC DLL
然后选择Add->Resource->Dialog
在 CTestDll.cpp 中添加代码
#include "CTestDlg.h" extern "C" __declspec(dllexport) void Show() AFX_MANAGE_STATE(AfxGetStaticModuleState()); CTestDlg test; test.DoModal();
创建一个 MFC 应用程序进行测试。您可以通过按钮单击事件调用它。
void CMFCApplication3Dlg::OnBnClickedButton1()
// TODO: Add your control notification handler code here
typedef void (WINAPI *TESTDLL)();
HINSTANCE hInstance = LoadLibrary(_T("CTestDll.dll")); //
if (hInstance != NULL)
TESTDLL TestShow = (TESTDLL)GetProcAddress(hInstance, "Show");
if (TestShow != NULL)
TestShow();
FreeLibrary(hInstance);
【讨论】:
以上是关于Visual Studio 2013 DLL 项目:运行 DLL 时不显示对话框窗体的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 2013 中添加对您自己的 DLL 项目的依赖项/引用
项目在 Visual Studio 2015 PrivateAssemblies 中找不到 dll
使用 Visual Studio 2013 为本机 DLL 正确生成 PDB 文件
使用 Visual Studio 2010 在 dll 项目中包含 Qt 工具