用windows

时间:2016-03-27 18:47:49

标签: c++ windows winforms

我在c ++(visual studio 2010)中创建了一个程序,用于查找串行COM端口并将其友好名称与已定义的文本进行比较。当匹配时,打开/连接端口并开始串行通信。

程序会在找到com端口时通知用户,连接是否成功以及数据发送是否成功以及其他有用信息。该程序使用cout通知用户。

我想用Windows窗体替换控制台输出窗口,但无法在线找到有关如何执行此操作的资源。为了说明,我想要这个:

console output

成为这个:

form output

我包含了form1.h和其他文件,并尝试用下面的代码替换cout,但代码没有编译:

Form1::textBox1->Text = L" Text I want to display";

任何人都可以解释如何使用textBox1或教程吗?

2 个答案:

答案 0 :(得分:0)

"我包括form1.h" - 你不能只抓取随机文件并希望它有效。这不是C ++的工作原理,也不是一般的计算机。

你怎么做这样的事情?标准库提供std::cout,默认情况下Visual Studio包含标准库,因此使用它非常简单。但是对于图形,你需要另一个库。我推荐Qt,只是因为有很好的初学者教程。

答案 1 :(得分:0)

所以我终于在我的问题中实现了上面描述的功能,并且认为我应该在这里发布我的发现。

要将我的代码从控制台输出转换为Windows Form,我基本上必须从c ++迁移到C ++ / cli。

holowczak.com有一个很棒的教程,介绍如何在visual studio中使用Windows窗体(c ++ / cli)。

接下来,如果你的c ++代码中有任何繁忙的循环(如无限的while循环),那么你需要在一个单独的线程上运行该busy循环,否则程序就会挂起。关于如何在c ++ / cli中创建和管理线程的Dr.Dobb's教程可以提供很多帮助。

最后,如果您需要从另一个线程访问Windows窗体的资源(例如文本框和其他控件),则必须进行线程安全调用。微软" HowTo:对Windows窗体控件进行线程安全调用"解释了如何使用invoke方法从另一个线程更新文本框。