Visual C++ .NET - Crear consola con TextBox

 
Vista:
sin imagen de perfil

Crear consola con TextBox

Publicado por Eduardo (2 intervenciones) el 10/10/2006 00:08:37
Hola, tengo un problemita, estoy haciendo una pequeña simulación de un filesystem en Visual C++, yo ya la he hecho en c++ normal, utilizando devc++, pero ahora me piden que la haga gráfica, pero también con la opcion de ingresar comandos como en la consola, lo primero que se me ocurrio fue utilizar un textbox para este propocito, hacer una clase que herede de el y modificarla, pero yo no conozco mucho de .Net ni del componente textBox, así que quisiera saber si alguno ya ha hecho algo parecido o tiene alguna idea de como hacerlo.
Lo que necesito algo así como las funciones de c++ para consola aplicadas al textbox ej:
cout << --> que imprima en el textbox
cin >> --> que lea del textbox
gotoxy --> función de turbo c de borland

y que el usuario no pueda utilizar las arrow keys libremente

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Simulación gráfica de filesystem con TextBox personalizado

Publicado por Alejandro (265 intervenciones) el 30/01/2024 00:02:13
Eduardo, para lograr una simulación gráfica de un filesystem en Visual C++ con la capacidad de ingresar comandos a través de un TextBox, puedes usar el componente `RichTextBox` en lugar de `TextBox`, ya que ofrece más funcionalidades de formato y manejo de texto.

Aquí hay un ejemplo básico para guiarte. Este ejemplo asume que estás trabajando en un formulario de Windows Forms en C++/CLI:

1. Agregar un RichTextBox:
- Agrega un `RichTextBox` a tu formulario desde el diseñador. Puedes hacer esto desde la interfaz gráfica arrastrando y soltando el componente desde la caja de herramientas.

2. Implementar funcionalidades similares a la consola:
- Puedes escribir funciones para imprimir y leer desde el `RichTextBox`. Aquí hay un ejemplo simple:

1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <msclr/marshal_cppstd.h>
 
void ImprimirEnRichTextBox(System::Windows::Forms::RichTextBox^ richTextBox, const std::string& mensaje) {
    richTextBox->AppendText(gcnew System::String(mensaje.c_str()) + "\n");
}
 
std::string LeerDesdeRichTextBox(System::Windows::Forms::RichTextBox^ richTextBox) {
    return msclr::interop::marshal_as<std::string>(richTextBox->Text);
}

3. Desactivar las arrow keys:
- Para desactivar las teclas de flecha, puedes manejar el evento `KeyPress` del `RichTextBox`:

1
2
3
4
5
private: System::Void richTextBox_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) {
    if (e->KeyChar == (char)Keys::Up || e->KeyChar == (char)Keys::Down || e->KeyChar == (char)Keys::Left || e->KeyChar == (char)Keys::Right) {
        e->Handled = true;  // Desactiva las teclas de flecha
    }
}

4. Implementar la función gotoxy:
- Puedes implementar una función similar a `gotoxy` utilizando la propiedad `SelectionStart` del `RichTextBox`:

1
2
3
4
void GotoXY(System::Windows::Forms::RichTextBox^ richTextBox, int x, int y) {
    richTextBox->SelectionStart = richTextBox->GetFirstCharIndexFromLine(y) + x;
    richTextBox->ScrollToCaret();
}

Estos son solo ejemplos básicos, y puedes personalizarlos según tus necesidades específicas. Recuerda que trabajar con controles de formularios en C++/CLI es un poco diferente a C++ puro, ya que estás utilizando .NET.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Simulación gráfica de filesystem con TextBox personalizado

Publicado por Eduardo (2 intervenciones) el 30/01/2024 00:07:44
Hola Alejando, solo para estar seguros, sabes que esta pregunta la hice hace 18 años?

De igual manera muchas gracias por la respuesta, la leeré con interés me ha traído muy buenos recuerdos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar