Programación General > Visual C++

 ventana llama a otra ventana

(1/2) > >>

picyo:
Hola, me gustaría saber como puedo hacer una cosa que en principio deberia ser bastante facil, pero no doy una. He creado desde visual C++ una ventana. A esa ventana le añado un botón. Al margen, en el directorio de encabezados, creo un archivo que es Form2.h ( el primero es Form1.h). Ahora con el boton de la ventana 1 ( Form1) quiero que al pulsar vaya a la ventana 2, sin nada mas que eso.

Desde Form1 trato de averiguar como generar el evento de pulsar boton ( en Form1), y estoy mirando en propiedades para el boton y no encuentro nada que diga " al apretar este boton"... que he de hacer ?

rfog:
Primero, eso no es C++, es C++/CLI y es otro lenguaje diferente.

Segundo, el evento se llama Click, y en los botones, haciendo doble clic sobre el botón en tiempo de diseño, te lo crea automáticamente.

Luego, en el evento, tienes que crear el nuevo form y mostarlos:

Form2 ^f=gcnew Form2(this);
f->ShowModal();   //Creo que se llama así, no me acuerdo bien
delefe f;

Y no te olvides de incluir el fichero cabecera del form 2 en el form 1.

picyo:
pues lo que me has dichio lo he puesto aqui:

form1.h

--- Código: C++ ---#pragma endregion    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {                 //// crear en evento del boton 1 la ventana de Form2                 Form2 ^f=gcnew Form2(this);                 f->ShowModal(); //Creo que se llama así, no me acuerdo bien                 delete f;   
me ha dado errores, como :

--- Código: C++ ---Error   1   error C3673: 'ventana::Form2' : class does not have a copy-constructor  c:visual studioejerciciosbegining visual c++ 2008examplesventanaventanaventanaForm1.h   88  ventanaError   2   error C2039: 'ShowModal' : is not a member of 'ventana::Form2'  c:visual studioejerciciosbegining visual c++ 2008examplesventanaventanaventanaForm1.h   89  ventana 
El constructor de la Form2 es del mismo modo que el de Form1, no he sabido interpretar ese error ( no le gusta lo de gcnew...), asi que digo..vamos a ver..si se ha creado Form1, que impide que lo cree del mismo modo ? y eso he hecho, substituyendo lo que me has dicho ( que realmente no quiero substituirlo) por esto ottro:

--- Código: C++ ---#pragma endregion    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {                 //// crear en evento del boton 1 la ventana de Form2                                Application::Run(gcnew Form2());     } 
Bien no me da errores ni warning, pero al compilarlo y ejecutarse la ventana ( Form1) bien...clico el botón y ... zas! Mensaje de error con tipica opcion de cnacel abort...
Que significaban pues los errores del principio ? Y ya puestos... que impide la ejecución de esta segunda alternativa??

picyo:
bueno lo he solucionado, es bastante próximo a lo que me decías, solo que asi :


--- Código: C++ ---Form2 ^f=gcnew Form2();// entre parentesis no hay que poner void f->ShowDialog();            // es showdialogdelete f; 
necesitaba ya hacer una "tonteria" de estas, porque estoy aprendiendo C++ desde la base, lo que es CLR programas de Consola, e intento aplicar lo mínimo de Microsoft ( para proyectos Visual como este no claro) y en el curso que sigo solo hago que implementar arrays punteros ( que se como van pero mi lógica no creo que entienda nunca el verdaddero significado "ahoorativo de memoria" de un puntero..). Merci ! ;)

rfog:
Lo que estás haciendo no es precisamente alejarte del C++/CLI, pero bueno.

Los punteros son lo que son, y te puedo asegurar que sin el concepto de puntero la informática no existiría como tal.

Que no te gusten o no los entiendas es habitual en principiantes, pero que debes aprenderlos es obligatorio.

Respecto a mi error, hace ya un par de años que no uso C++/CLI, y la verdad es que la memoria juega malas pasadas.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa