Windows GUI app の console/terminal 出力

WndProc で WM_CREATE の際に次のように console を初期化しておく。


case WM_CREATE:
int hConsle;
AllocConsole();
hConsle = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
*stdout = *_fdopen(hConsle, "w");
setvbuf(stdout, NULL, _IONBF, 0);
// printf("console output\n");
break;

stdio.h, io.h, fcntl.h を include しておく。

ただ、これでは別な DOS window があがるだけなので、存在する DOS window
から起動して、そこに書かせられるわけではない。なんとも自分勝手なつくりだ。