Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 22:41

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C++] Win 32 Fenster Projekt + Konsole?

Discussion on [C++] Win 32 Fenster Projekt + Konsole? within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Dec 2010
Posts: 463
Received Thanks: 97
[C++] Win 32 Fenster Projekt + Konsole?

Hi leute,

hab mal kurz ne Frage undzwar hab ich mir nen Fenster erstellt (es kann noch garnix) nur jetzt wollte ich mir zur hilfe noch ne Konsole dazu klatschen.

Hab wohl was gefunden (AllocConsole) doch bin zu blöd es anzuwenden xD

Kann mir vllt jemand erklären wie man das macht?

Fals ihr den Source Code braucht siehe Spoiler:
MysticAngelz is offline  
Old 06/21/2012, 22:42   #2


 
Ende!'s Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 6,379
Received Thanks: 7,998
Code:
#include <io.h>
#include <fcntl.h>
Code:
void SpawnConsole()
{
   FILE* hf_out;
   FILE* hf_in;

   AllocConsole();

   HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE);
   int hCrt = _open_osfhandle((long) handle_out, _O_TEXT) 
   hf_out = _fdopen(hCrt, "w");
   setvbuf(hf_out, NULL, _IONBF, 1);
   *stdout = *hf_out;

   HANDLE handle_in = GetStdHandle(STD_INPUT_HANDLE);
   hCrt = _open_osfhandle((long) handle_in, _O_TEXT);
   hf_in = _fdopen(hCrt, "r");
   setvbuf(hf_in, NULL, _IONBF, 128);
   *stdin = *hf_in;
} // ==> SpawnConsole
Fehlen vermutlich noch ein paar Includes, musst du mal selber schauen.
Ende! is offline  
Thanks
1 User
Old 06/21/2012, 23:24   #3
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
Code:
int WINAPI WinMain(	HINSTANCE hInstance,
					HINSTANCE hPrevInstance,
					LPSTR     lpCmdLine,
					int       nCmdShow )
{
	AllocConsole();
	std::cout << "Wasd" << 123 << std::endl;
	//...
	return 0;
}
Gerade getestet, funktioniert einwandfrei.

Ende, gibt es einen besonderen Grund warum man das so nutzen sollte, wie du es gepostet hast? Oder fingert VS da irgendwie rein, so dass die streams nicht von mir umgeleitet werden müssen?
Nightblizard is offline  
Thanks
1 User
Old 06/22/2012, 07:03   #4
 
elite*gold: 0
Join Date: Dec 2010
Posts: 463
Received Thanks: 97
Danke an beide jetzt noch ne Frage ist es auch möglich beides gleichzeitig laufen zu lassen denn wenn ich zb. SpawnConsole/oder was Night geschrieben hat oben in meine WinMain packe dan wartet das Fenster bis diese Anwendung für die Konsole vorbei ist.

@Night wenn ich das richtig verstanden habe. Dann wollte ich das damit ich über die Console nochmal Variablen ändern kann.
MysticAngelz is offline  
Old 06/22/2012, 15:10   #5


 
Ende!'s Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 6,379
Received Thanks: 7,998
Quote:
Originally Posted by Nightblizard View Post
Ende, gibt es einen besonderen Grund warum man das so nutzen sollte, wie du es gepostet hast? Oder fingert VS da irgendwie rein, so dass die streams nicht von mir umgeleitet werden müssen?
Phew, gute Frage! Ich benutze es so nun schon seit Jahren - weiß das gar nicht mehr so genau. Ich glaub es hatte etwas damit zu tun, dass, wenn man via CreateProcess einen Prozess erstellt und es nicht explizit per Parameter unterbindet, der Child-Prozess die Console des Parents erbt; ergo die Ausgaben in der Console des Parents landen anstatt in der eigenen. Bin mir aber nicht mehr ganz sicher - ist wie gesagt ewig her, dass ich das Ding gebastelt hab ..

Quote:
Danke an beide jetzt noch ne Frage ist es auch möglich beides gleichzeitig laufen zu lassen denn wenn ich zb. SpawnConsole/oder was Night geschrieben hat oben in meine WinMain packe dan wartet das Fenster bis diese Anwendung für die Konsole vorbei ist.
Bitte konkretisieren, kann ich so nicht nachvollziehen.
Ende! is offline  
Old 06/22/2012, 15:22   #6
 
.SkyneT.'s Avatar
 
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 786
Quote:
Originally Posted by Ende! View Post
Code:
#include <io.h>
#include <fcntl.h>
Code:
void SpawnConsole()
{
   FILE* hf_out;
   FILE* hf_in;

   AllocConsole();

   HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE);
   int hCrt = _open_osfhandle((long) handle_out, _O_TEXT) 
   hf_out = _fdopen(hCrt, "w");
   setvbuf(hf_out, NULL, _IONBF, 1);
   *stdout = *hf_out;

   HANDLE handle_in = GetStdHandle(STD_INPUT_HANDLE);
   hCrt = _open_osfhandle((long) handle_in, _O_TEXT);
   hf_in = _fdopen(hCrt, "r");
   setvbuf(hf_in, NULL, _IONBF, 128);
   *stdin = *hf_in;
} // ==> SpawnConsole
Fehlen vermutlich noch ein paar Includes, musst du mal selber schauen.
Fehlt nicht noch etwas wie damit auch der Rest umgeleitet wird ?
.SkyneT. is offline  
Old 06/22/2012, 16:19   #7


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Ich würds einfach in nen seperaten Thread packen, damit das normale Fenster und die Konsole gleichzeitig laufen können.
MrSm!th is offline  
Old 06/24/2012, 11:21   #8
 
elite*gold: 0
Join Date: Mar 2012
Posts: 26
Received Thanks: 3
Also wenn du Dev C++ hast brauchst du nur Neu->Projekt->Konsolenanwendung machen. Dann löscht du den Code und schreibst deine WinMain rein und du hast Fenster und Konsole gleichzeitig. Ich weiß aber nicht ob das so einfach bei Visual Studio auch geht.
ehauser is offline  
Reply


Similar Threads Similar Threads
Neuer Monitor für PC und Konsole, aber bei Konsole kein Sound!
01/08/2012 - Technical Support - 2 Replies
Hey Leute! Ich habe zum meinem 18. einen neuen Monitor bekommen, den S2330mx von DELL. Nun ja ich bin ziemlich zufrieden mit dem Bildschirm. Mein Problem ist halt jetzt, das im Bildschirm keine Lautsprecher eingebaut sind. Und ein Audio Eingang ist auch keiner. Alles am PC läuft gut, aber Sound bei meiner Playstation 3 ist halt nicht da und ich wollte fragen ob man das irgendwie machen könnte, das ich auch Sound habe, wenn ich Playstation spiele. Boxen habe ich auch von DELL und die...



All times are GMT +2. The time now is 22:41.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.