Foros del Web » Programación para mayores de 30 ;) » C/C++ »

wxWidgets

Estas en el tema de wxWidgets en el foro de C/C++ en Foros del Web. Hola amigos, me gustaría crear ventanas en C++ al igual como lo hago en Python, ya tengo un código muy simple que sólo crea la ...
  #1 (permalink)  
Antiguo 31/05/2014, 15:41
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
wxWidgets

Hola amigos, me gustaría crear ventanas en C++ al igual como lo hago en Python, ya tengo un código muy simple que sólo crea la ventana, pero que necesitaría para crear ventanas en C++? wxwidgets?

Bajé este programa wxMSW-3.0.0-Setup.exe que pesa 45 Megas, ese es el programa que debo instalar?

este es el código que tengo para crear ventanas:

Código C++:
Ver original
  1. #include "wx/wx.h"
  2.  
  3. class Programa : public wxApp
  4. {
  5.     public:
  6.         virtual bool OnInit();
  7. };
  8.  
  9. class Ventana : public wxFrame
  10. {
  11.     public:
  12.         Ventana(const wxString& titulo);
  13. };
  14.  
  15. DECLARE_APP(Programa)
  16. IMPLEMENT_APP(Programa)
  17.  
  18. bool Programa::OnInit()
  19. {
  20.     Ventana *v = new Ventana(wxT("Hola mundo"));
  21.     v->Show(true);
  22.  
  23.     return true;
  24. }
  25.  
  26. Ventana::Ventana(const wxString& titulo)
  27.     : wxFrame(NULL, wxID_ANY, titulo)
  28. {
  29.  
  30. }

Pero si instalo el kit de librerías wxMSW-3.0.0-Setup.exe, como se haría para que las librerías vayan directamente aquí: "wx/wx.h" ?

Gracias amigos como siempre ^_^
  #2 (permalink)  
Antiguo 31/05/2014, 21:19
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 9 meses
Puntos: 5
Respuesta: wxWidgets

hola amigo.
bueno pues yo no e utilizasado wxWidgets.
pero te doy estas opciones haber si te animas a usarlas.
bueno ami me gusta GTK aparte de que es parac pero tambien es soportado por varios lenguajes como python, c, c++ etc y es un poco mas rapido que qt.
pero tambiene sta qt que es mas c++ ya que esta programado en el a mi este casi no me gusta, igualmente es soportado por mucho lenguajes pero creo que tambien se esta metiendo en los moviles.
los dos son multiplataforma.
y bueno tambien esta SDL pero esta es mas como para video juegos.
bueno te dejo estas alternativas para ver si las pruebas.
siento no poderte ayudar con el codigo pero wxwidgets no lo e tocado.

Saludos.
Drewermerc.
  #3 (permalink)  
Antiguo 01/06/2014, 06:19
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: wxWidgets

Buen día amigo Drewermerc, gracias por tu ayuda.

En realidad me interesa wxwidgets ya que lo he trabajado en Python y me gusta mucho, y la verdad que no quiero aprender más, no quiero perder el tiempo, no ganaré dinero con esto y sería un esfuerzo totalmente en vano, por eso prefiero aprender una sola cosa, lamentablemente la gente no quiere pagar por un programa, prefieren descargar otro de internet, por más que el que vos hayas creado sea mucho mejor.

Entónces prefiero seguir con wxwidgets que es parecido a wxPython, osea es parecido porque son el mismo kit de herramientas, nomás que uno es para Python y el otro para C++.

Esa es mi opinión.

Gracias igualmente.
  #4 (permalink)  
Antiguo 01/06/2014, 07:52
 
Fecha de Ingreso: mayo-2014
Mensajes: 5
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: wxWidgets

Hola,

Te recomiendo que use CodeLite + wxCrafter (Diseño Visual) ya trae un instalador que te configura las librerias de wxWidgets

http://codelite.org

tiene que instalar tres cosas
  1. CodeLite 5.4 Installer for Windows
  2. wxWidgets installer for Windows
  3. CodeLite 5.4 Plugin - wxCrafter v1.4

El IDE no es tan famoso como otros pero es de lo mejor

Saludos
  #5 (permalink)  
Antiguo 01/06/2014, 08:28
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: wxWidgets

Muchas gracias amigo devjpcb, pero he instalado wxwidgets, solamente quiero ver como son las ventanas en C++, lo que no sé ahora es como configurar el CodeBlocks para que detecte las librerías de wxwidgets, encontré un manual pero es cuando existía Jesús, extramadamente viejo, bueno algo viejo, pero no sirve para versiones actuales, las configuraciones y opciones no son las mismas.

Me gustaría un manual para poder aunque sea crear un Hola mundo en C++.
  #6 (permalink)  
Antiguo 01/06/2014, 17:11
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: wxWidgets

He intentado compilar un programa que tan solo tiene un botón y al hacerlo me da estos errores:

En la pestaña Build log me da este error:

-------------- Build: Debug in OtraVentana (compiler: GNU GCC Compiler)---------------

mingw32-g++.exe -LC:\wxWidgets-2.8.12\lib\gcc_dll -o bin\Debug\OtraVentana.exe obj\Debug\GUIFrame.o obj\Debug\NewFrame.o obj\Debug\OtraVentanaApp.o obj\Debug\OtraVentanaMain.o obj\Debug\resource.res -mthreads -lws2_32 -lwxmsw28ud -mwindows
c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw28ud
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 0 warning(s) (0 minute(s), 0 second(s))



En Build messages me dice esto:

||=== Build: Debug in OtraVentana (compiler: GNU GCC Compiler) ===|
ld.exe||cannot find -lwxmsw28ud|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|


Ya probé de varias maneras y no puedo sacar el ejecutable, favor que alguien me ayude, soy malo en C++ y es todo bastante dificil, yo trato de hacerlo pero no puedo solo, millones de configuraciones hay que hacer, que variables de aquí que variables de allá, es todo un kilombo esto, pero al menos lo intento, no se porque falla así, primero me daba un error de que no encontraba el archivo setup.h eso lo copié de un dir a otro dir y ahora me salen esos errores que puse arriba, osea copie setup0.h y lo pegue en otro directorio y lo renombré a setup.h que es lo que había leído en internet, pero ahora me salen essos errores de arriba.

Por ahí pienso que es bastante difícil que alguien con experiencia de un cierto lenguaje explique como yo lo hago, jamás quedaron dudas en los años que ayudé a mucha gente, y cuando preguntaban algo, les contestaba, esa ayuda "online" es la que nunca he tenido y ahora tampoco la tengo, no tengo esa posibilidad, no soy un genio como otras personas que ahí captan todo, me cuesta, pero al menos algo hago. Como ya he dicho otras veces, estoy totalmente solo en esto, no tengo un compañero ni nada, solo algunas personas que me dan una mano pero muchas veces es poco, porque me gustaría que me ayudaran como yo por años lo hice, fueron 3 años, pero igual es algo que ayudé en lo que pude, disculpen por esto, pero me embola la vida cuando no puedo solo y no encuentro ayuda.

Gracias igualmente. Suerte.
  #7 (permalink)  
Antiguo 01/06/2014, 17:52
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 9 meses
Puntos: 5
Respuesta: wxWidgets

hola amigo.
bueno sabes si que es bastante dificil esto yo tambien e intentado compilar pero no e podido crear ningun .exe
pense que no era dificil manejar ya que muchos la usan y la recomienda asi que pense que hasta venia incluida en los ides pero no es asi.
seguire intentado haber si logro hacer un ejecutable si puedo publico la respuesta pero si me ganas haber si puedes hacer el favor de publicalo.
Saludos.
Drewermerc
  #8 (permalink)  
Antiguo 01/06/2014, 18:27
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: wxWidgets

Personas como vos me alientan a seguir, eso me encanta, así me gusta amigo, que nos ayudemos así!!!

Te comento que en esta web:

http://wiki.codeblocks.org/index.php...#Build_and_Run

Aquí está traducido en nuestro idioma:

http://translate.googleusercontent.c...#Build_and_Run

explica como configurar algunas cosas de wxwidgets en CodeBlocks, ahora hice algo que no había hecho antes, osea hice esto desde la CMD:

cd wxWidgets\build\msw

entré a ese directorio, pero antes de entrar, en la misma explicación me dice que cambie el nombre de la carpeta wxWidgets-2.8.12 a esta wxWidgets
lo hice, y de ahí ejecuté este comando:

mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1 CXXFLAGS=-fno-keep-inline-dllexport

todavía no tengo la variable de mingw32-make configurada, por lo que tube que poner la ruta entera, así que ahí empezó el compilador a compilar muchos archivos y esto demoró como media hora, o 20 minutos.

Luego ya con esperanza de que esto funcione, traté de compilarlo a .exe y me sale este error:

ld.exe||cannot find -lwxmsw28ud|

y bueno ya no sé que más hacer, también probé creando diferentes proyectos con diferentes opciones, pero aún así me da ese error, que buscando en google vi que no soy el único, pero no puedo solucionarlo, seguiré intentanto y por supuesto que si logro sacar el ejecutable, lo informo aquí como lo hice!!!

Muchas gracias como siempre amigo Drewermerc
Un fuerte abrazo!

Y gracias a los demás compañeros!!

PD: Más ayuda en español:
http://programaciond2.blogspot.com.a...odeblocks.html

Última edición por Principe_Azul; 01/06/2014 a las 18:48
  #9 (permalink)  
Antiguo 01/06/2014, 19:42
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 9 meses
Puntos: 5
Respuesta: wxWidgets

hola amigo.
bueno ese tambien es el metodo que yoestaba intentado pero el mio fue de otra fuente y bueno el proceso que yo hice fue el siguiente.
en la terminal ejecutar esto:

Código C:
Ver original
  1. //primero me ubique en la carpeta msw
  2. cd c:\wxWidgets\build\msw
  3.  
  4. //despues compile se tardo al rededor de 25 a 30 min
  5. mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1
  6.  
  7. //despues cuando termine
  8. se abri code::blocks.
  9. new - file- project - wxWidget project.
  10.  
  11. en la primera pantalla precionas next.
  12.  
  13. en la segunda  escojer la vercion de wxWidgets que descargaron en mi caso escojo wxWidgets3.0.x y next.
  14.  
  15. en la tercera escribes el nombre y la ruta donde se va a guardar el proyecto y next.
  16.  
  17. en la cuarta los datos son opcionales si no quieres escribirlos preciona next.
  18.  
  19. en la quinta donde dicec preferrend GUI builder escojer la primera opcion y donde dice aplication type tambiene scojer la primera opcion y next.
  20.  
  21. en la sexta se escoje la ruta donde descomprimir las librerias (o donde este instalada la libreria en caso de hber descargado el instaldor)se aconseja que este en c:\ en mi caso seria c:\wxWidgets y next.
  22.  
  23. en la septima desactivar create "Debuger" y activar create "Release" y next.
  24.  
  25. en la octava en wxWidgets library settings  marcar las tres opciones y todas las demas deben de estar desmarcadas y next.
  26.  
  27. por ultimo en settings - compiles - tab linker settings debe estar todo en blanco sin ningun parametro.
  28.  
  29. por ultimo en management - proyects - despliegas tu proyecto en la carpeta sources la despliegas y le das doble a el archivo PPPApp.cpp y solo compilas y ya estara la aplicacion.
  30.  
  31. en el nombre del archivo PPPApp.cpp la parte de PPP cambia por el nombre  que le pusiste a tu proyecto.
  32.  
  33. bueno para escribir tus propias aplicaciones solo tienes que modifcar el archivo PPPApp.cpp acontinuacion te pongo como se modifica.

archivo original PPPApp.cpp
Código C++:
Ver original
  1. /***************************************************************
  2.  * Name:      ffApp.cpp
  3.  * Purpose:   Code for Application Class
  4.  * Author:     ()
  5.  * Created:   2014-06-01
  6.  * Copyright:  ()
  7.  * License:
  8.  **************************************************************/
  9.  
  10. #ifdef WX_PRECOMP
  11. #include "wx_pch.h"
  12. #endif
  13.  
  14. #ifdef __BORLANDC__
  15. #pragma hdrstop
  16. #endif //__BORLANDC__
  17.  
  18. #include "ffApp.h"
  19. #include "ffMain.h"
  20.  
  21. IMPLEMENT_APP(ffApp);
  22.  
  23. bool ffApp::OnInit()
  24. {
  25.    
  26.     ffDialog* dlg = new ffDialog(0L, _("wxWidgets Application Template"));
  27.     dlg->SetIcon(wxICON(aaaa)); // To Set App Icon
  28.     dlg->Show();
  29.     return true;
  30. }

archivo modificado este es el unico archivo que se modifica.
Código C++:
Ver original
  1. /***************************************************************
  2.  * Name:      PPPApp.cpp
  3.  * Purpose:   Code for Application Class
  4.  * Author:    PP ()
  5.  * Created:   2014-06-01
  6.  * Copyright: PP ()
  7.  * License:
  8.  **************************************************************/
  9.  
  10. #ifdef WX_PRECOMP
  11. #include "wx_pch.h"
  12. #endif
  13.  
  14. #ifdef __BORLANDC__
  15. #pragma hdrstop
  16. #endif //__BORLANDC__
  17.  
  18. #include "PPPApp.h"
  19. #include "PPPMain.h"
  20.  
  21.     class Programa : public wxApp
  22.     {
  23.         public:
  24.             virtual bool OnInit();
  25.     };
  26.  
  27.     class Ventana : public wxFrame
  28.     {
  29.         public:
  30.             Ventana(const wxString& titulo);
  31.     };
  32.  
  33.     DECLARE_APP(Programa)
  34.     IMPLEMENT_APP(Programa)
  35.  
  36.     bool Programa::OnInit()
  37.     {
  38.         Ventana *v = new Ventana(wxT("Hola mundo"));
  39.         v->Show(true);
  40.  
  41.         return true;
  42.     }

bueno amigo espeor que esto te funcione.
bueno esta es la primera libreria es la segunda libreria que me cuenta mucho para poder compilarla.
tambien te queria decir que si no tienes un materia de como programar wxWidgets solo quiero conocerla por si algun dia me dan un codigo con esta libreria.
bueno por fin se dejo compilar esta libreria
bueno espero que te sea de ayuda la informacion y si no te funciona comenta y te ayudo.
Saludos.
Drewermerc.

Última edición por Drewermerc; 01/06/2014 a las 19:49
  #10 (permalink)  
Antiguo 03/06/2014, 06:30
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: wxWidgets

Hola amigo, muchas gracias por tu ayuda!! :D

Al fin lo he logrado!! Pude compilar la ventana perfectamente, aunque tengo 1 solo problema, pero lo pude compilar bien.

Bueno la forma que lo solucioné fue agregar estas variables:

$(#WX.include)
$(#WX.lib)\gcc_dll\msw
$(#WX.lib)\gcc_dll$(WX_CFG)\msw
$(#WX)\contrib\include
sdk\wxscintilla\include
sdk\as\include


en Settings | Search directories | Compiler

Y esto no hay que olvidarse... Se tiene que crear un nuevo proyecto y ya debería funcionar.

Bueno el problema que tengo ahora es este... El programa compila bien, se crea el ejecutable, pero en el momento de abrir el programa (don doble clic) me sale un error informándome que no se puede abrir el programa porque necesita la librería wxmsw28u_gcc_custom.dll, entónces el programa no se abre, pero al buscar ese dll en mi pc, lo encuentro y lo llevo al mismo directorio donde está este ejecutable, entónces lo abro nuevamente y ahí funciona perfectamente, ahora el peso de este archivo dll es bastante, pesa 16mb, por lo que debería incluir de alguna forma ese dll dentro del ejecutable o algo similar que no dependa de ese binario, ya que es bastante pesado y no debería estar aparte del programa, sino dentro de él o de alguna otra forma, pero que ese dll no exista junto con el ejecutable.

Bueno yo tenía ganas y la duda de ver un programa con wxwidgets en C++, en Python es practicamente algo fácil de hacerlo, osea de crear ventanas y controles, pero al compilarlo a .exe el peso realmente es desagradable, por ejemplo mi programa Buscador de Puertos TCP pesa:

Tamaño: 17,6 MB (18.550.258 bytes)
Tamaño en disco: 17,7 MB (18.587.648 bytes)

osea, 17 megas me parece mucho, esta bien, Python es un lenguaje interpretado, pero yo creo que deberían cambiar esta forma, para que los ejecutables pesen menos, ¿que diferencia puede haber de un exe en Python y otro exe en C++?, pues la verdad no lo sé, pero es cierto que los ejecutables de Python pesan menos, pero su tamaño total con librerías pesa mucho más, he usado el método de compresión que dispone py2exe, pero esto no me ha servido ya que le baja la calidad al programa, osea le quita esos hermosos efectos del programa, lo deja como si fuese un programa hecho en TKinter, los que conocen aplicaciones en TKinter saben la diferencia que hay con wxPython.

Por esa razón me intrigaba saber cuando pesaría un programa ejecutable en C++, pero como todavía tengo que incorporar ese dll en el programa, no puedo ver la diferencia, el tema es ver cuanto hay de diferencia en cuanto al peso, ya que podría inclinarme en crear ventanas en C++ para que pesen menos, sean más rapidas y tan solo sea el ejecutable (por defecto en Python son como 20 archivos y el ejecutable).

Bueno espero que me puedan ayudar.
Gracias nuevamente amigo Drewermerc!!

Un abrazo campeón!
  #11 (permalink)  
Antiguo 03/06/2014, 23:25
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: wxWidgets

Cita:
necesita la librería wxmsw28u_gcc_custom.dll...
¿Has mirado a poner esa librería en system32 o en algun directorio del sistema?
No te solucionará el tamaño, pero al menos no has de duplicarla en cada ejecutable que crees.
  #12 (permalink)  
Antiguo 04/06/2014, 10:19
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: wxWidgets

Cita:
¿Has mirado a poner esa librería en system32 o en algun directorio del sistema?
No te solucionará el tamaño, pero al menos no has de duplicarla en cada ejecutable que crees.
No, pero no creo que tenga que hacer eso ya que librería también tendría que tenerla el usuario que use el ejecutable, osea poner también esa misma librería en su sistema.

Bueno los programas en C son livianos, me imagino que en C++ también lo serán.
  #13 (permalink)  
Antiguo 04/06/2014, 12:48
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 9 meses
Puntos: 5
Respuesta: wxWidgets

hola amigo
bueno pues yo no tube es problema al compilar alomejor fuepo que ya habia agrgado las carpetas anteriormente provando otros metodos perogracia spor el dato.

y la unica forma que yo encontrado para hacer o exe es con los programas ilmege o iexpress de microsoft tambien dicen que es muy bueno upx pero ese si no lo e provado si quieres chacalo

bueno espero que te sirva eso.
Saludos.
Drewermerc
  #14 (permalink)  
Antiguo 04/06/2014, 16:03
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: wxWidgets

Gracias compañero Drewermerc

Etiquetas: programa, string, wxwidgets
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:01.