gpt4 book ai didi

c - 如何从 native C DLL 显示简单的非模式窗口

转载 作者:行者123 更新时间:2023-11-30 14:26:38 27 4
gpt4 key购买 nike

我必须在 native C DLL 中创建一个简单的提示。我从来没有用 C 创建窗口,所以我不知道存在什么可能性。

窗口应包含一个文本框和一个按钮。当用户按下按钮时,我应该能够获取该文本框的值。显示时,窗口不应中断程序流程,它应该是无模式的。我必须能够从 DLL 内的代码关闭窗口。

我一直在考虑使用 MFC,直到我意识到它是用于 C++ 的。所以我想我可以编写一个包装器,然后像这样使用它,但显然必须重构项目的某些部分才能使其正常工作(例如更改入口点)。我对如何使用任何“GUI 框架”有点困惑,但如果有一个简单的解决方案那就太好了。

解决方案应该尽可能简单。

编辑:

DLL 的用途...

我们有一个使用 SCC 接口(interface)的应用程序套件(我将其称为 IDE)。我们有一个 SVN 存储库,因此我们使用 PushOk 将查询从 IDE 转换为 SVN 命令。 PushOk 和 IDE 对 SCC 接口(interface)的定义并不总是一致,因此 IDE 会因某些操作而崩溃。由于我们不拥有 PushOk 的源代码,因此我们编写了自己的代理 dll,它解决了我们遇到的具体问题。

现在,PushOk 没有在指定修订版本时获取文件的选项(可以,但在我们的情况下不起作用)。所以我们必须自己去实现。前面提到的窗口是可以输入修订版本的窗口,然后我们将获得具有该修订版本的文件。

最佳答案

您不应该使用 DLL 中的 GUI 框架,这会导致灾难。坚持使用普通的 win32 api(CreateDialog() 和 friend ,一切都应该很好)。

(该短语是从评论中复制的,因此我将详细说明)。

这个功能其实很好用:

  • 首先您需要将 DIALOG 资源编译到 DLL 中。 VisualStudio 集成资源编辑器在这里会很方便。

  • 然后编写一个DLGPROC函数

.

BOOL CALLBACK MyDialogProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_INITDIALOG:
/* ... */
default:
return FALSE;
}
}
  • 在导出的函数中只需调用,并保存句柄供以后使用:

.

 HWND hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(ID_MY_DIALOG), NULL);
  • 如果你想销毁对话框,只需调用:

.

DestroyWindow(hWnd);

查找您想了解的有关 Win32 对话框(及更多)的所有信息 here .

关于c - 如何从 native C DLL 显示简单的非模式窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8833250/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com