Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Abrir una ventana de consola

Iniciado por Diferencial, 12 de Diciembre de 2006, 01:22:19 PM

« anterior - próximo »

Diferencial

Quiero crear una ventana de consola desde un formulario WinForms con C#, pero no veo en ninguna parte como se puede conseguir. Alguien me puede echar una mano?
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.

Diferencial

Al igual como siempre no me he explicado bien, quiero crear una ventana que sea tipo consola. Sin tener que crear el proyecto de tipo consola claro. A ver si alguien ha tenido la misma curiosidad que yo.
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.

marcode

En C++ es con AllocConsole, y según este artículo parece que también en C#.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

Diferencial

Muchas gracias, aunque solo lo queria para depurar los programas que tengo y podria haber usado cualquier formulario, pero queria hacerlo por consola.
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.

bnl

No estoy muy seguro, pero creo q en aplicaciones windows no se puede mostrar la consola. Deberias usar un proyecto de consola
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

vincent

Cita de: "bnl"No estoy muy seguro, pero creo q en aplicaciones windows no se puede mostrar la consola. Deberias usar un proyecto de consola

Que yo sepa, si que se puede... si encuentro un código donde lo tengo hecho lo posteo por aqui.

Buenas fiestas!
Desarrollo en .Net y metodologías http://devnettips.blogspot.com

BeRSeRKeR

Claro que se puede. Ejemplo muy muy simple para la salida de texto:

class DOSConsole
{
public:
DOSConsole()
{
AllocConsole();

m_hOut = GetStdHandle(STD_OUTPUT_HANDLE);
}

~DOSConsole()
{
FreeConsole();
}

void Write(TCHAR *message)
{
DWORD numChars;
WriteConsole(m_hOut, message, static_cast<DWORD>(wcslen(message)), &numChars, NULL);
}

private:
HANDLE m_hOut;
};


Uso...

DOSConsole myConsole;
myConsole.Write(_T("¡Hola mundo!"));


Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Diferencial

Gracias por el codigo, feliz navidad a todos  :D
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.

[EX3]

La pena es que no se pueda utilizar el objeto Console de .NET que hace muy comodo trabajar muchas funcionalidades de la consola de comandos (sobre todo en la version 2.0), pero weno, a falta de pan buenas son tortas, me apunto este codigo que me viene de lujo para depuraciones como en el caso de Diferencial, pero aun asi supongo que alguna forma deberia de haber de acceder a la consola desde el objeto Console o al menos de referenciar una consola hecha a pelo con dicho objeto, no se.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

bnl

¿BeRSeRKeR ese codigo es C#?
Si no me equivoco lo que haces es llamar al API de windows.
Yo me referia a que no se podia hacer directamente llamando a funciones del framework. En su dia lo estuve mirando y creo recordar que las salidas de la consola (usando el Console) se redireccionaban a otra salida (la ventana de resultados creo)
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

BeRSeRKeR

Cita de: "bnl"¿BeRSeRKeR ese codigo es C#?
No, perdón por la confusión. No sé por qué, pensé que se hablaba de C++. :lol:

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Buffon


#include <windows.h>   // Standard Header For MSWindows Applications
#include <gl/glut.h>   // The GL Utility Toolkit (GLUT) Header

// The Following Directive Fixes The Problem With Extra Console Window
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")

// Global Variables
bool g_gamemode;       // GLUT GameMode ON/OFF
bool g_fullscreen;     // Fullscreen Mode ON/OFF (When g_gamemode Is OFF)

// Our GL Specific Initializations
bool init(void)
{
   glShadeModel(GL_SMOOTH); // Enable Smooth Shading
   glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black Background
   glClearDepth(1.0f); // Depth Buffer Setup
   glEnable(GL_DEPTH_TEST); // Enables Depth Testing
   glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do
   glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
return true;
}

// Our Rendering Is Done Here
void render(void)  
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
glLoadIdentity(); // Reset The Current Modelview Matrix
glTranslatef(-1.5f,0.0f,-6.0f); // Move Left 1.5 Units And Into The Screen 6.0
glBegin(GL_TRIANGLES); // Drawing Using Triangles
glVertex3f( 0.0f, 1.0f, 0.0f); // Top
glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right
glEnd(); // Finished Drawing The Triangle
glTranslatef(3.0f,0.0f,0.0f); // Move Right 3 Units
glBegin(GL_QUADS); // Draw A Quad
glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left
glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right
glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right
glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
glEnd();

   // Swap The Buffers To Become Our Rendering Visible
   glutSwapBuffers ( );
}

// Our Reshaping Handler (Required Even In Fullscreen-Only Modes)
void reshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);     // Select The Projection Matrix
glLoadIdentity();                // Reset The Projection Matrix
// Calculate The Aspect Ratio And Set The Clipping Volume
if (h == 0) h = 1;
gluPerspective(80, (float)w/(float)h, 1.0, 5000.0);
glMatrixMode(GL_MODELVIEW);      // Select The Modelview Matrix
glLoadIdentity();                // Reset The Modelview Matrix
}

// Our Keyboard Handler (Normal Keys)
void keyboard(unsigned char key, int x, int y)
{
switch (key) {
case 27:        // When Escape Is Pressed...
exit(0);    // Exit The Program
break;          // Ready For Next Case
default:        // Now Wrap It Up
break;
}
}

// Our Keyboard Handler For Special Keys (Like Arrow Keys And Function Keys)
void special_keys(int a_keys, int x, int y)
{
switch (a_keys) {
case GLUT_KEY_F1:
// We Can Switch Between Windowed Mode And Fullscreen Mode Only
if (!g_gamemode) {
g_fullscreen = !g_fullscreen;       // Toggle g_fullscreen Flag
if (g_fullscreen) glutFullScreen(); // We Went In Fullscreen Mode
else glutReshapeWindow(500, 500);   // We Went In Windowed Mode
}
break;
default:
break;
}
}

// Ask The User If He Wish To Enter GameMode Or Not
void ask_gamemode()
{
int answer;
// Use Windows MessageBox To Ask The User For Game Or Windowed Mode
answer = MessageBox(NULL, "Do you want to enter game mode?", "Question",
MB_ICONQUESTION | MB_YESNO);
g_gamemode = (answer == IDYES);
// If Not Game Mode Selected, Use Windowed Mode (User Can Change That With F1)
g_fullscreen = false;
}

// Main Function For Bringing It All Together.
int main(int argc, char** argv)
{
ask_gamemode();                                  // Ask For Fullscreen Mode
glutInit(&argc, argv);                           // GLUT Initializtion
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);     // Display Mode (Rgb And Double Buffered)
if (g_gamemode) {
glutGameModeString("640x480:16");            // Select The 640x480 In 16bpp Mode
if (glutGameModeGet(GLUT_GAME_MODE_POSSIBLE))
glutEnterGameMode();                     // Enter Full Screen
else g_gamemode = false;                     // Cannot Enter Game Mode, Switch To Windowed
}
if (!g_gamemode) {
glutInitWindowSize(500, 500);                // Window Size If We Start In Windowed Mode
glutCreateWindow("NeHe's OpenGL Framework"); // Window Title
}
init();                                          // Our Initialization
glutDisplayFunc(render);                         // Register The Display Function
glutReshapeFunc(reshape);                        // Register The Reshape Handler
glutKeyboardFunc(keyboard);                      // Register The Keyboard Handler
glutSpecialFunc(special_keys);                   // Register Special Keys Handler
glutMainLoop();                                  // Go To GLUT Main Loop
return 0;
}



cuando toco OpenGL lo hago con el pragma de arriba, bueno con DirectX sería igual eh ! sólo que yo compilo con mi Makefile aunque supongo que en proyecto para VisualStudio también funcionaría.

Código sacado de NEHE que el mio lo tengo en el portatil y no lo puedo mirar ahora ;)

si me dejas tiempo y me acuerdo te paso mi fichero defines.h que tengo definidos todos los colores para poder pintar en la consola con el cout

Tavo

Gente, tanto lio para esto?

using System;

public class MyClass
{
     static public void Main()
     {
              Console.WriteLine("Si, estoy en consola!!!");
              Console.ReadKey();
     }
}

bnl

Eso es lo q comentabamos q no funciona en una apliacion win forms.
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

Diferencial

Cita de: "Tavo"Gente, tanto lio para esto?

using System;

public class MyClass
{
     static public void Main()
     {
              Console.WriteLine("Si, estoy en consola!!!");
              Console.ReadKey();
     }
}

Eso estaria bien en un proyecto de tipo consola, pero lo que se intenta es hacerlo en un proyecto tipo winforms

bnl mira el enlace que ha puesto marcode arriba ahi aparece un ejemplo de como crear una ventana de consola.
No te muestra como escribir solamente como crearla, pero escribir en consola es tan facil como poner
Console.WriteLine("Lo que quieras que aparezca en consola");
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.