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

时间:2014-08-05 02:55:20

标签: c++

我正在学习使用wxWidgets创建GUI应用程序,因为我仍然不熟悉许多功能和内部工作,所以我想立即获得有关这些过程的一些信息。

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

我可以使用哪个小部件/控件来完成此任务,使用起来也相对简单?

编辑:附加信息
我在C ++编码,在W7系统上使用wxWidgets 3.0.1和CodeBlocks 13.12 IDE。

3 个答案:

答案 0 :(得分:1)

最简单的方法是将程序构建为控制台子系统可执行文件。

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

如果您绝对不想这样做,那么您可以将GUI子系统程序的输出通过管道传输到将输入复制到输出的控制台程序。创建一个小cat程序,或使用* nix-utilities变体,对此非常有用。或者您可以使用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;
}

构建为控制台子系统(这是g ++的默认设置)并运行:

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>_

构建为GUI子系统并运行:

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>_

注意:clog映射到标准错误流,因此要通过管道提供此类输出,例如做a 2>&1

答案 1 :(得分:1)

如果您使用的是Windows 7,请将OutputDebugString与调试器一起使用?

如果您真的想在应用程序本身中显示消息,请尝试listbox之类的内容并将其轮播以获取有限数量的消息。

答案 2 :(得分:1)

使用wxLogDebug()并在调试器下查看输出或在Windows下使用DebugView等工具查看输出,直接在Unix下运行应用程序的终端(包括OS X)中查看。

如果您想将其用于严格调试以外的其他操作,请考虑使用wxLogVerbose()wxLogWindow