Programación General > Visual C++
ventana llama a otra ventana
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
[#] Página Siguiente
Ir a la versión completa