gpt4 book ai didi

c++ - 在控制台应用程序和 Windows 窗体之间共享数据

转载 作者:太空宇宙 更新时间:2023-11-04 11:50:49 25 4
gpt4 key购买 nike

我正在编写一个主要在控制台中运行的程序,但偶尔我需要使用表单。

我创建了一个 Windows 窗体,然后将输出切换到控制台。之后,我在项目中又添加了一个表单 (Form2),现在我的代码看起来像这样:

#include "stdafx.h"
#include <iostream> // For std::cout and such
#include "Form1.h"
#include "Form2.h"

using namespace testing_forms;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
// Enabling Windows XP visual effects before any controls are created
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);


/* Instructions Block 1 */

Application::Run(gcnew Form1());

/* Instructions Block 2 */

Application::Run(gcnew Form2());

/* Instructions Block 3 */

return 0;
}

所以,基本上,程序运行第一个指令 block ,然后调用表单,然后运行第二个指令 block ,依此类推。

但是,这不允许我在表单和控制台之间共享数据,因为它只是一个程序,所以我确实需要这些数据,例如用户名、整数等。

我能想到的唯一方法是保存一个文本文件并从控制台和表单写入/读取它/从中共享信息(我没有测试过),但是,老实说,我不我真的不喜欢这个解决方案。

那么,如何(最好)仅使用变量在 Windows 窗体和控制台之间来回共享数据?

最佳答案

有很多方法 - 您可以使用套接字、管道、消息队列,可以将信息存储在数据库中,可以在控制台应用程序中托管 WCF 服务等。

但我不会在这里讨论哪一个是最好的。真的,如果您遇到这个问题,那么您很可能应该将整个解决方案变成一个 Windows 窗体/WPF 应用程序。在同一应用程序的表单之间传递信息要容易得多,特别是如果它们可以相互引用的话。他们只需要调用彼此的方法,或访问彼此的属性,或使用相同的静态类。所有这些都在同一环境中,没有跨越应用程序边界。

如果您想将控制台保留在那里,您可以隐藏主窗体并打开一个单独的控制台应用程序。然后,您可以向此控制台提供任何相关文本。

深思。

关于c++ - 在控制台应用程序和 Windows 窗体之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18321041/

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