小编Ter*_*nen的帖子

将stdout重定向到编辑控件(Win32)

我有一个简单的Win32 GUI应用程序,它在主窗口中有一个编辑控件.如果我写:

printf("Hello world!\n");
Run Code Online (Sandbox Code Playgroud)

我希望文本出现在该控件而不是控制台中.如何?

更新:应用程序只是带编辑控件的简单窗口,我可以在显示或不显示控制台(gcc -mwindows)的情况下编译它.有时我会调用一个外部函数,这可能是printf()的东西 - 我想抓住那些东西并在编辑控件中显示它.到目前为止,SetStdHandle()似乎最接近我试图实现的目标,但我无法让它工作,但......


更新2:请,有人可以告诉我为什么这不起作用以及如何解决它?

HANDLE hRead, hWrite;
CreatePipe(&hRead, &hWrite, NULL, 0);

SetStdHandle(STD_OUTPUT_HANDLE, hWrite);

printf("Hello world!\n");

CloseHandle(hWrite); // Why is this needed?

DWORD dwRead;
BOOL bSuccess;
CHAR chBuf[4096];
bSuccess = ReadFile(hRead, chBuf, 4096, &dwRead, NULL); // This reads nothing :(
Run Code Online (Sandbox Code Playgroud)

此外,它仍然向控制台打印"Hello world",我预计它不会......?

winapi redirect

4
推荐指数
1
解决办法
6036
查看次数

标签 统计

redirect ×1

winapi ×1