C++ 创建一个简单的窗口来输出用于调试的信息(日志样式)-wxWidgets

C++ 创建一个简单的窗口来输出用于调试的信息(日志样式)-wxWidgets,c++,C++,我正在学习使用wxWidgets创建GUI应用程序,由于我对许多功能和内部工作仍不熟悉,因此我想立即获得一些有关流程的信息 为了澄清,如果我正在创建一个简单的控制台应用程序,我可以简单地打印F/cout相关的结果、标志,。。。的操作,这将帮助我调试和遵循程序流程。但由于我正在创建一个GUI应用程序,所以没有为此打开控制台。这就是为什么我希望与主应用程序一起打开一个单独的窗口,用于以日志样式输出调试信息 我可以使用什么样的小部件/控件来完成这个任务,而且使用起来也相对简单 编辑:其他信息 我在C+

我正在学习使用wxWidgets创建GUI应用程序,由于我对许多功能和内部工作仍不熟悉,因此我想立即获得一些有关流程的信息

为了澄清,如果我正在创建一个简单的控制台应用程序,我可以简单地打印F/cout相关的结果、标志,。。。的操作,这将帮助我调试和遵循程序流程。但由于我正在创建一个GUI应用程序,所以没有为此打开控制台。这就是为什么我希望与主应用程序一起打开一个单独的窗口,用于以日志样式输出调试信息

我可以使用什么样的小部件/控件来完成这个任务,而且使用起来也相对简单

编辑:其他信息

我在C++中使用WXWIDGIS3.0.1,W7系统上的代码块13.12 IDE编码。

最简单的是将程序作为控制台子系统执行。 无论代码如何,都可以将程序构建为GUI或控制台子系统可执行文件

如果您绝对不想这样做,那么您可以通过管道将GUI子系统程序的输出传输到控制台程序,该控制台程序将输入复制到输出。为此,创建一个小的
cat
程序或使用*nix实用程序变量是很好的选择。或者您也可以使用
find/v”“


下面是一个Windows API级别的程序示例:

#include <windows.h>
#include <iostream>
using namespace std;

auto main() -> int
{
    cout << "Well I'm starting up!" << endl;

    auto const infobox = MB_ICONINFORMATION | MB_SETFOREGROUND;
    MessageBox( 0, "Just click OK, OK?", "Blah!", infobox );

    cout << "Yay, I'm finished!" << endl;
}
#包括
#包括
使用名称空间std;
auto main()->int
{
库特_
构建为GUI子系统并运行:

C:\my\pwd\examples\winhello>g++ w2.cpp C:\my\pwd\examples\winhello>a Well I'm starting up! Here a message box pops up. Nothing more happens until it's dismissed. Yay, I'm finished! C:\my\pwd\examples\winhello>_ C:\my\pwd\examples\winhello>g++ w2.cpp -mwindows C:\my\pwd\examples\winhello>a | find /v "" Well I'm starting up! Here a message box pops up. Nothing more happens until it's dismissed. Yay, I'm finished! C:\my\pwd\examples\winhello>_ C:\my\pwd\examples\winhello>g++w2.cpp-mwindows C:\my\pwd\examples\winhello>a | find/v“” 我要开始了! 这里会弹出一个消息框。在它被解除之前不会再发生任何事情。 耶,我完了! C:\my\pwd\examples\winhello>_
注意:
clog
映射到标准错误流,因此要通过管道显示此类输出,您需要执行
a2>&1
最简单的方法是将程序构建为控制台子系统可执行文件

无论代码如何,都可以将程序构建为GUI或控制台子系统可执行文件

如果您绝对不想这样做,那么您可以通过管道将GUI子系统程序的输出传输到控制台程序,该程序将输入复制到输出。创建一个小的
cat
程序,或者使用*nix实用程序变体,这是很好的选择。或者您也可以使用
find/v”“


下面是一个Windows API级别的程序示例:

#include <windows.h>
#include <iostream>
using namespace std;

auto main() -> int
{
    cout << "Well I'm starting up!" << endl;

    auto const infobox = MB_ICONINFORMATION | MB_SETFOREGROUND;
    MessageBox( 0, "Just click OK, OK?", "Blah!", infobox );

    cout << "Yay, I'm finished!" << endl;
}
#包括
#包括
使用名称空间std;
auto main()->int
{
库特_
构建为GUI子系统并运行:

C:\my\pwd\examples\winhello>g++ w2.cpp C:\my\pwd\examples\winhello>a Well I'm starting up! Here a message box pops up. Nothing more happens until it's dismissed. Yay, I'm finished! C:\my\pwd\examples\winhello>_ C:\my\pwd\examples\winhello>g++ w2.cpp -mwindows C:\my\pwd\examples\winhello>a | find /v "" Well I'm starting up! Here a message box pops up. Nothing more happens until it's dismissed. Yay, I'm finished! C:\my\pwd\examples\winhello>_ C:\my\pwd\examples\winhello>g++w2.cpp-mwindows C:\my\pwd\examples\winhello>a | find/v“” 我要开始了! 这里会弹出一个消息框。在它被解除之前不会再发生任何事情。 耶,我完了! C:\my\pwd\examples\winhello>_
注意:
clog
映射到标准错误流,因此要通过管道显示此类输出,您需要执行
a2>&1

如果您在Windows 7上,使用带有调试器的
OutputDebugString
如何


如果您确实想在应用程序本身中显示消息,请尝试使用类似于
列表框的方法,并将其旋转以显示有限数量的消息。

如果您在Windows 7上,使用带有调试器的
OutputDebugString
如何

如果您确实想在应用程序本身中显示消息,请尝试类似于
列表框的操作,并将其旋转以显示有限数量的消息。

使用
wxLogDebug()
并在调试器下或使用诸如Windows之类的工具直接在Unix下运行应用程序的终端中查看输出(包括OSX)

如果您想将此用于除严格调试之外的其他事项,请考虑使用<代码> WxLogVBueSe()/<代码>和

< P>使用<代码> WxLogDebug()>代码>,并在调试器下查看输出,或使用Windows下的工具,直接在运行UNIX(包括OS X)下的应用程序的终端。


如果你想用这个东西来进行严格的调试,请考虑使用<代码> WxLogVBueSe()/<代码>和./P>谢谢你的回答,我当然不会开始这样的事情,而且我真的不知道什么是“猫”。不管怎样,我意识到我应该增加更多的信息。我使用C++,WxWIDGIS3.0.1,WE7系统上的CODBOLIDE 13.12 IDE。哦,如果<代码> Foo是你的程序,那么当它作为控制台子系统构建时,你可以运行它,并且观看<代码> CUT<代码>或<代码> Cug 输出。当它作为GUI子系统构建时,运行它。e

foo | find/v”“
,或
foo | cat
,如果您有一个
cat
;-)(这是一个Unix实用程序,是catenate的缩写,catenate又是concatenate的缩写,这是它的主要工作:连接文件。)对于代码::块的默认编译器g++,选择子系统的常用选项是-mwindows-mconsole。但是可以指定(或者根本不指定)作为链接器选项,如
-Wl,-subsystem,windows
-Wl,-subsystem,console
。感谢您提供的额外信息。您能提供所有这些额外信息来扩展您的答案吗?一些资源展示了一个简单的程序示例,以及如何设置编译器来构建它,这将非常好。我正在寻找r一个简单的,对初学者友好的选项=)谢谢你们的回答,我当然不会开始这样的事情,我实际上不知道什么是“猫”不管怎样,我意识到我应该增加更多的信息。我使用C++,WxWIDGIS3.0.1,WE7系统上的CODBOLIDE 13.12 IDE。哦,如果<代码> Foo是你的程序,那么当它作为控制台子系统构建时,你可以运行它,并且观看<代码> CUT<代码>或<代码> Cug 输出。当它作为GUI子系统构建时,运行它。e
foo | find/v”“
,或
foo | cat
如果您有
ca