gpt4 book ai didi

c++ 多线程 Windows GUI(访问表单)

转载 作者:搜寻专家 更新时间:2023-10-31 01:55:09 25 4
gpt4 key购买 nike

我已经使用 Windows 套接字编写了一个简单的控制台应用程序作为服务器和客户端之间的代理。我决定制作一个图形界面来实时查看所有传入/传出数据包(就像一个非常简单的 wireshark)。

服务器和客户端之间的连接运行在与消息循环不同的线程上。当服务器/客户端发送数据包时,我希望立即显示(例如添加到简单的文本控件)。

但是由于除了消息循环所在的线程之外,我无法从其他线程访问表单,所以我不知道如何处理这个问题。

我在以下方面找到了几种解决方案:- 托管 C++- C++/命令行界面- C#,但如果不使用 .NET 平台就不行。 (我对这个 GUI 主题真的很陌生,所以我什至不确定您是否可以在没有 .NET 的情况下使用 Windows 窗体)

也许 QT + C++ 可以解决这个问题,但还有其他解决方案吗?如果不能,是否可以用 C#/Java 为 native C++ 代码编写包装器?

一定有很多用 C/C++ 编写的应用程序使用 GUI,一般的做法是什么?

最佳答案

您绝对正确,您不能访问不同线程中的窗口。处理此问题的正确方法是使用::PostMessage Win32 API 命令发布消息(或者,如果您正在使用 Win32 周围的包装器库,则该包装器中最终调用 PostMessage 的任何函数)。这是 Microsoft 提供的有关消息队列的有用链接: http://msdn.microsoft.com/en-us/library/windows/desktop/ms644928(v=vs.85).aspx

关于c++ 多线程 Windows GUI(访问表单),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8735830/

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