2010-12-07 17 views
0

Я работаю в приложении MFC, которое работает в режиме графического интерфейса пользователя, и пользователь может запускаться из командной строки. В режиме графического интерфейса я отлично работаю. Но в режиме командной строки я использовал printf() для отображения ошибки, но ничего не приходит в командной строке. Чтобы решить эту проблему, я получил функцию AttachConsole (ATTACH_PARENT_PROCESS), чтобы отобразить содержимое на консоли. Но выход не стерилизуют, т.е. если я запустить приложение в командной строке вывод будет выглядеть сильфонаОтображение вывода на консоли Проблема

G:\Bin\conTest\Debug>conTest.exe 

G:\Bin\conTest\Debug>This is test comment 
Press any key to continue . . . 

Но я хочу выход быть как сильфона

G:\Bin\conTest\Debug>conTest.exe 

This is test comment 
Press any key to continue . . . 

G:\Bin\conTest\Debug> 

Пожалуйста, помогите мне решить проблему, пыльник фрагмент кода

DWORD written; 

if (AttachConsole(ATTACH_PARENT_PROCESS)) 
{ 
out = GetStdHandle (STD_OUTPUT_HANDLE); 
} 

CString dump = "This is test comment\n"; 
WriteConsole (out, (LPCTSTR) dump, dump.GetLength(), &written, 0); 

system("pause"); 
FreeConsole(); 
+0

I «Предположите, что приложение ставит себя в качестве фонового процесса или эквивалентно Microsoft в качестве вилки в какой-то момент. Появляется ли следующее приглашение ввода сразу после запуска приложения? Я видел, что это случается много, когда я запускаю приложение в качестве фонового процесса в Linux. –

+0

да подсказка ввода показывает, как только приложение запускается. –

ответ

0

Используйте эту строку вместо:

CString dump = "\n\nThis is test comment\n"; 
0

Возможно это исправить ваш вопрос:

Перейти к проекту> Свойства проекта> Linker> Система и в правой части окна установите Подсистемы вариант для консоли (/ Subsystem: CONSOLE)

Смежные вопросы