我正在学习使用wxWidgets创建GUI应用程序,因为我仍然不熟悉许多功能和内部工作,所以我想立即获得有关这些过程的一些信息。
为了澄清,如果我正在创建一个简单的控制台应用程序,我可以简单地printf / cout相关结果,标志,...操作屏幕,这将有助于我调试和遵循程序流程。但是因为我正在创建一个GUI应用程序,所以我没有打开控制台。这就是为什么我想和主应用程序一起打开一个单独的窗口,用于以日志样式输出调试信息。
我可以使用哪个小部件/控件来完成此任务,使用起来也相对简单?
编辑:附加信息
我在C ++编码,在W7系统上使用wxWidgets 3.0.1和CodeBlocks 13.12 IDE。
答案 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。