- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须在 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/
我是一名优秀的程序员,十分优秀!