AttachConsole を使うのが、多分良いと思われます。例えば、次のような感じになります。
/* 最初の一回 */
if (! AttachConsole (ATTACH_PARENT_PROCESS)) {
/* 呼び出し元は console ではないと推測…。*/
}
/* snip */
/* Console に出したい場所で…。*/
hStdOutput = GetStdHandle (STD_OUTPUT_HANDLE) ;
if (hStdOutput != INVALID_HANDLE_VALUE) {
TCHAR buf [] = TEXT ("Hello, Console!\n") ;
DWORD dwWritten ;
if (! WriteConsole (hStdOut, buf, sizeof (buf) / sizeof (buf [0]) - 1, &dwWritten, NULL)) {
/* 何か処理。*/
}
}