Newsgroup: it.comp.programmare.win32
Titolo: MFC + cin/cout: e' possibile? Come?

Salve
qualcuno sa come si possano usare le cin/cout della libreria standard
del C++ in un'applicazione MFC? Cioe', vorrei creare una
finestra-console, da affiancare la GUI, e su quella finestra-console
usare cin/cout.
Qualcuno ha qualche dritta?
Thx

usare cin/cout.
Non basta che fai cosi?
1_
	#include <iostream>
2_
	std::cin >> a;
3_	std::cout << a;
?
--
Rhymes
rhy...@myself.com
http://www.foxhound-games.it

 Qualcuno ha qualche dritta?
Prova con AllocConsole() se non ricordo male...
-- 
Luc.

codeninj...@libero.it
 (CodeNinja):

In Visual C++ puoi farlo includendo l'header che ho riportato in fondo
al messaggio: ti permette di usare una printf ridefinita in modo da
far apparire l'output su una specie di console. Ad esempio:
  #include "console.hpp"
  \\ [...]
  console::printf( "Hello World!\n" );
Ciao, Marvin
// file console.hpp
#ifndef CONSOLE___HPP
#define CONSOLE___HPP
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
#include <inttypes.h>
#include <windows.h>
namespace console
{ 
  bool flag = false;
  FILE *F;
 
  FILE* __AllocConsole()
  {
    AllocConsole();
    {
      HANDLE HF = GetStdHandle( STD_OUTPUT_HANDLE );
      int nH = _open_osfhandle( (uintptr_t)HF, _O_WRONLY );
      F = _fdopen( nH, "w" );
    }
    flag = true;
    return F;
  }
 
  int printf( const char *fmt, ... )
  {
    va_list arg;
    va_start( arg, fmt ); 
    int rv=0;
    if(!flag) __AllocConsole();          
    if(F) rv = vfprintf(F,fmt,arg);          
    _flushall();
    va_end(arg);
    return rv;
  }
}
#endif
// fine file console.hpp

 3_ std::cout << a;
se compili con l'opzione /SUBSYSTEM:WINDOWS o qlc del genere (che in MFC e'
d'obbligo) no. funziona solo se compili un'applicazione console.
ciao :: xaero

d'obbligo) no. funziona solo se compili un'applicazione console.
Ah questa non la sapevo,. Si vede che non ho mai scritto un app MFC?
^_^
--
Lawrence "Rhymes" Oluyede
rhy...@myself.com
http://www.foxhound-games.it

  console::printf( "Hello World!\n" );
Grazie!!

Grazie!!
Prego.
Tra l'altro, mi sono accorto che nel messaggio precedente avevo
incluso un header (inttypes.h) che non fa parte di Visual C++, ma di
una libreria di grafica 3D. L'header console.hpp corretto è questo:
// file console.hpp
#ifndef CONSOLE___HPP
#define CONSOLE___HPP
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
//#include <inttypes.h>
#include <windows.h>
namespace console
{ 
  bool flag = false;
  FILE *F;
 
  FILE* __AllocConsole()
  {
    AllocConsole();
    {
      HANDLE HF = GetStdHandle( STD_OUTPUT_HANDLE );
      //int nH = _open_osfhandle( (uintptr_t)HF, _O_WRONLY );
      int nH = _open_osfhandle( (unsigned long int)HF, _O_WRONLY );
      F = _fdopen( nH, "w" );
    }
    flag = true;
    return F;
  }
 
  int printf( const char *fmt, ... )
  {
    va_list arg;
    va_start( arg, fmt ); 
    int rv=0;
    if(!flag) __AllocConsole();          
    if(F) rv = vfprintf(F,fmt,arg);          
    _flushall();
    va_end(arg);
    return rv;
  }
}
#endif
// fine file console.hpp
-- 
Ciao, Marvin

console.
E allora si mette #pragma linker option /subsystem:windows (spero di 
aver azzeccato la sintassi) in stdafx.h. Sta' tranquillo che MFC 
funziona lo stesso
-- 
Nato nel vizio, morto nel supplizio
Nato nel peccato, ad entrare sia invitato