2010-12-07 7 views
0

Je travaille dans une application MFC qui s'exécute à la fois en mode GUI et à partir de l'invite de commande. En mode graphique, je travaille bien. Mais en mode invite de commande, j'ai utilisé printf() pour afficher l'erreur, mais rien ne vient dans l'invite de commande. Pour résoudre ce problème, j'ai obtenu la fonction AttachConsole (ATTACH_PARENT_PROCESS) pour afficher le contenu sur la console. Mais la sortie n'est pas stérilisé à savoir si je lance l'application dans la ligne de commande la eteint ressemblera ci-dessousAffichage de la sortie sur la console Problème

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

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

Mais je veux que la sortie soit comme ci-dessous

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

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

G:\Bin\conTest\Debug> 

S'il vous plaît aidez-moi à résoudre le problème, Bellow est l'extrait de code

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 D devinez l'application se met en tant que processus d'arrière-plan ou fait l'équivalent Microsoft d'une fourchette à un moment donné. L'invite de saisie suivante s'affiche-t-elle dès le démarrage de l'application? J'ai vu cela se produire beaucoup quand je démarre une application en tant que processus d'arrière-plan sur Linux. –

+0

oui l'invite de saisie s'affiche dès le démarrage de l'application. –

Répondre

0

Utilisez cette chaîne à la place:

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

Peut-être résoudre votre problème:

Aller au projet> Propriétés du projet> Linker> Système et dans le volet droit, définissez SubSystems option Console (/ SUBSYSTEM: CONSOLE)

Questions connexes