Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Meta en 14 Marzo 2014, 21:08 pm



Título: ¿Cómo crear un Windows Form?
Publicado por: Meta en 14 Marzo 2014, 21:08 pm
Hola:

¿Cómo crear un Windows Form en C++ 2013?

Aquí hay un ejemplo para crearlo en CLR que no me interesa.
http://jabatogames.blogspot.com.es/2013/03/activar-windows-froms-en-visual-studio.html

Quiero lograrlo en Win32 con el código exe nativo, nada de FramWork como usa C# en C CLR. ;)

Un saludo.


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: kub0x en 14 Marzo 2014, 23:09 pm
He movido el tema a C/C++ ya que tu mismo dices que quieres desarrollar la UI en Win32 sin depender del Framework (propio y exclusivo de .NET).

Te aconsejo que leas y destripes la API de Windows. Si no quieres morir picando código y leyendo documentación de APIs entonces utiliza otras librerías para el desarrollo gráfico de ventanas/interfaces/controles/etc (GTK, Qt...).

Saludos!


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: amchacon en 14 Marzo 2014, 23:34 pm
Usa wxWidgets, es una libreria multiplataforma que llama a las funciones nativas de cada SO.

Más intuitiva que las Windows API y además multiplataforma. ¿Que mas quieres? xD


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: eferion en 15 Marzo 2014, 02:08 am
WinForms es exclusivo de .NET. Por tanto, si quieres usar WinForms tienes que usar .NET por fuerza.

Sin embargo, para C++ hay otras alternativas totalmente viables: wxWidgets, Qt, WinAPI, MFC, GTK, ... Cada una tiene sus puntos fuertes y sus puntos débiles con respecto a las demás.

A mi personalmente Qt me gusta bastante, es un framework bastante completo.


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: Meta en 15 Marzo 2014, 03:09 am
Hola:

En Visual C++ Express 2013 (http://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx) se puede programar C++ con CLR como si fuera C# con el santo framwork que en este caso no me interesa. Y C/C++ Win32. Pensaba que para 64 bits no servía, hasta que me comentaron que hay un WDK 8.1 (http://msdn.microsoft.com/en-US/windows/hardware/gg454513) para serlo.

Si con Visual C++ 2013 puedo hacer lo miso con Win32. ¿Por qué debo usar otro compilador?

Muchos lo usan, es más, el IDE me parece muy bueno, no quiere decir que realmente lo sea.  ;)

Estoy aprendiendo C++ por el tema de capturar variables de un juego de coches como el cuentakilómetros para visualizarlo en mi propia aplicación y enviar los datos por USB, COM o LTP y mostrarlo en un display y Leds, que la electrónica no tengo problemas, si en la programación en C.

(http://www.x-sim.de/manual/game1.gif)
http://www.x-sim.de/manual/tutorial.html

Quiero hacer esta plaquita, que lo puedo hacer, no antes sin saber como extaer los datos en C, con Cheat Egine se capturarlos, pero no se hace trainers para ello.
q2kz9ZPRDss

Repito, quiero hacer una plaquita, no todo un simulador de un avión como este que le sobra tiempo y dinero,  :laugh: :laugh: :laugh: :laugh:
https://www.youtube.com/watch?v=I3h0B1H6JwY

Aún así, insisto. ¿Cuál es el motivo de usar otro compilador que no sea Visual Studio si funciona igual?
¿Motivos personales porque no le gusta Microsoft? En mi caso me da igual esa empresa mientras C/C++ funcione de maravilla.

Saludo.


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: amchacon en 15 Marzo 2014, 11:51 am
Citar
¿Cuál es el motivo de usar otro compilador que no sea Visual Studio si funciona igual?
El único motivo que se me ocurre es para compilarlo en otras plataformas con más comodidad.

Porque para Windows el mejor compilador es el de Microsoft.

PD: Puedes usar el compilador de Microsoft en otro IDE, si no tienes sientes comodo con el IDE de Microsoft.


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: x64core en 15 Marzo 2014, 18:38 pm
La WDK es un conjunto de herramientas para la programación de drivers no tiene nada que ver con un diferente compilador o eso,
simplemente se adapta al VS y agrega más opciones , etc. Además, el VC++ puede compilar para diferentes arquitecturas: x86,x86-64 y he visto ARM. lo único que se necesitan es la SDK. y recomiendo hacerlo en Win32.


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: Meta en 15 Marzo 2014, 22:56 pm
y recomiendo hacerlo en Win32.


Win32 ahora, y en el futo...

¿Win64 (por llamarlo de alguna manera) no es remomendable?

En la época de los 16 Bits y 32 bits pasaba algo similar.

Tarde o temprano, los 64 bits será lo que hay y muy poco de 32 bits como ahora se piensa de los 16 bits. ;)

Eso si, requiere por lo menos una década más o casi.

Eso sin contrar que todo será enla nube.

Saludo.


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: eferion en 15 Marzo 2014, 23:43 pm
En Visual C++ Express 2013 (http://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx) se puede programar C++ con CLR como si fuera C# con el santo framwork que en este caso no me interesa. Y C/C++ Win32. Pensaba que para 64 bits no servía, hasta que me comentaron que hay un WDK 8.1 (http://msdn.microsoft.com/en-US/windows/hardware/gg454513) para serlo.

.Net es un framework basado en una máquina virtual. Esto quiere decir que puedes programar .Net en cualquier lenguaje siempre y cuando exista un compilador que genere código compatible con dicha máquina virtual.

En el caso que comentas. VS dispone de un compilador CLR para C++. Este compilador genera código compatible con la máquina de .Net. Sin embargo, VS dispone también de un compilador C++ nativo, que genera binario puro y permite ejecutar los programas sin depender de la máquina virtual. En este segundo caso no puedes acceder a las facilidades de .Net. Es así de sencillo o complicado, depende de cómo quieras verlo.

Win32 ahora, y en el futo...

¿Win64 (por llamarlo de alguna manera) no es remomendable?

El problema con Win64 es que aún hay muchísimo hardware que no está preparado para soportarlo o directamente no dispone de drivers compatibles.

Como bien dices es algo que tenderá a solucionarse, pero tienes que darle tiempo.

Ahora mismo programar algo en 32 bits te garantiza una compatibilidad muchísimo mayor que si programas en 64 bits... aunque eso no quiere decir que no se pueda hacer.


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: Meta en 15 Marzo 2014, 23:53 pm
Es cuestión de tiempo todo a 64 bits.

Tampoco hay que centrarse siempre en los 32 bits, entonces. ¿Cuándo pasamos a los 64 bits?

¿Dentro ed 20 años?

¿Cuándo las noticias empiecen a comentar sobre las nuevas 128 bits? A lo mejor quedan 50 años para que llegue.

Como me dijo un amigo, usa 32 bits, también haz otro preparado para las 64 bits, jejejejje. Solo que las 32 bits llegan a casi 4 GB de RAM como máximo. En 64 bits, si no recuerdo mal,usan 192 GB de RAM, esto ya no estoy seguro. Aún así, ¿para qué tanta RAM?

El juego de PC Call of Duty: Ghost, hubo una queja de que requería cuando salió el juego al principio, 6 GB de RAM mínomo, alguien lo parcheó y se puede jugar con  4 GB e includo con 3 GB medianamente bien, con buen rendimiento incluido. O juegas con 6 GB de RAM, o lo parchear el ejecutable. Al final el juego salió un parche oficial sin decir que tiene, pero resuelve el problema de que ya se puede jugar oficialmente a 4 GB.

¿Ya tienen intensiones las empresas a ampliar RAM en los juegos cuando la realidad es distinta para hacernos negocios?

Programar en 64 bits, se necesita más RAM, más claro que el agua. Total, .net será el futuro y nativo como que será eliminado con los años y años, cuando lleve las cosas en la nube, peor todavía.

Un saludo.


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: eferion en 16 Marzo 2014, 01:01 am
Es cuestión de tiempo todo a 64 bits.

Tampoco hay que centrarse siempre en los 32 bits, entonces. ¿Cuándo pasamos a los 64 bits?

¿Dentro ed 20 años?

¿Cuándo las noticias empiecen a comentar sobre las nuevas 128 bits? A lo mejor quedan 50 años para que llegue.

Como me dijo un amigo, usa 32 bits, también haz otro preparado para las 64 bits, jejejejje. Solo que las 32 bits llegan a casi 4 GB de RAM como máximo. En 64 bits, si no recuerdo mal,usan 192 GB de RAM, esto ya no estoy seguro. Aún así, ¿para qué tanta RAM?

El juego de PC Call of Duty: Ghost, hubo una queja de que requería cuando salió el juego al principio, 6 GB de RAM mínomo, alguien lo parcheó y se puede jugar con  4 GB e includo con 3 GB medianamente bien, con buen rendimiento incluido. O juegas con 6 GB de RAM, o lo parchear el ejecutable. Al final el juego salió un parche oficial sin decir que tiene, pero resuelve el problema de que ya se puede jugar oficialmente a 4 GB.

¿Ya tienen intensiones las empresas a ampliar RAM en los juegos cuando la realidad es distinta para hacernos negocios?

Programar en 64 bits, se necesita más RAM, más claro que el agua. Total, .net será el futuro y nativo como que será eliminado con los años y años, cuando lleve las cosas en la nube, peor todavía.

Un saludo.

No estoy del todo de acuerdo con tu punto de vista.

Si cada vez se necesita más RAM no es por pasar de 32 bits a 64... más bien es al revés... se propone el paso de 32 a 64 para poder dar cobertura a la cada vez mayor demanda de RAM y recursos.

Antes los ordenadores funcionaban con 4MB de RAM y eso era la leche... claro que eran sistemas operativos simples como ellos solos... no existía apenas el P&P... hoy en día queremos que los SO y los juegos tengan gráficos y efectos vistosos y "guapos" y eso tiene un coste... además queremos que el ordenador nos avise cuando se ha encendido la consola y otras tantas cosas más... el precio a pagar para que todo eso funcione es que requiere equipos más potentes y con más recursos.


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: Miky Gonzalez en 16 Marzo 2014, 13:17 pm
Para crear una simple ventana (generalmente me gusta el código multiplataforma) te aconsejo usar GTK, versión 2 ó 3.

Un ejemplo de código que te podría servir, aunque necesitas documentarte:

Código
  1. #include <gtk/gtk.h>
  2.  
  3. int main(int argc, char *argv[]) {
  4. /*! Los widgets que usaremos */
  5. GtkWidget *win = NULL; // Ventana
  6. GtkWidget *close = NULL; // Botón cerrar
  7.  
  8. /*! Inicializar GTK+ */
  9. g_log_set_handler("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc)gtk_false, NULL);
  10. gtk_init(&argc, &argv);
  11. g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);
  12.  
  13. /*! Hacer la ventana */
  14. win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  15. gtk_container_set_border_width(GTK_CONTAINER(win), 10);
  16. gtk_widget_realize(win);
  17.  
  18. /*! Botón que ayudará a cerrar la ventana */
  19. close = gtk_button_new_with_label("CERRAR VENTANA");
  20. gtk_container_add(GTK_CONTAINER(win), close);
  21.  
  22. /*! Devoluciones de llamadas (Callbacks) */
  23. g_signal_connect((gpointer)close, "clicked", G_CALLBACK(gtk_main_quit), NULL); // Botón cerrar
  24. g_signal_connect((gpointer)win, "destroy", G_CALLBACK(gtk_main_quit), NULL); // Ventana
  25.  
  26. /*! Entrar en bucle principal */
  27. gtk_widget_show_all(win);
  28. gtk_main();
  29. return 0;
  30. }
  31.  

También puedes crear tu propia ventana con la API nativa de windows haciendo uso de funciones como: CreateWindowEx, RegisterClass, ShowWindow.
Espero que te haya servido de ayuda, puedes encontrar documentos de interés en:

http://www.winprog.org/tutorial/start.html (http://www.winprog.org/tutorial/start.html)


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: BloodSharp en 16 Marzo 2014, 21:48 pm
Pero el usuario Meta no quiere utilizar un framework como gtk, qt, mfc o wxwidgets lo dejó bien en claro, el quiere usar winapi puro. Para hacer eso te recomiendo que leas este tutorial de como hacerlo con winapi completo:

http://winapi.conclase.net/curso/index.php


B#


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: eferion en 17 Marzo 2014, 08:34 am
Pero el usuario Meta no quiere utilizar un framework como gtk, qt, mfc o wxwidgets lo dejó bien en claro, el quiere usar winapi puro. Para hacer eso te recomiendo que leas este tutorial de como hacerlo con winapi completo:

http://winapi.conclase.net/curso/index.php

B#

Perdona mi osadía, pero WinForms no es un winapi puro... es parte del framework de .NET.

Además, da igual si usas un framework específico o la api de windows... al final todos los frameworks acaban haciendo uso de la api de windows... lo que sucede es que los frameworks ofrecen muchas facilidades con respecto a la api... que es más bien básica.


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: x64core en 17 Marzo 2014, 09:13 am
Win32 ahora, y en el futo...

¿Win64 (por llamarlo de alguna manera) no es remomendable?

En la época de los 16 Bits y 32 bits pasaba algo similar.

Tarde o temprano, los 64 bits será lo que hay y muy poco de 32 bits como ahora se piensa de los 16 bits. ;)

Eso si, requiere por lo menos una década más o casi.

Eso sin contrar que todo será enla nube.

Saludo.

Más bien lo veo util en aplicaciones que realmente tiene un gran impacto en rendimiento; en donde se aprovechan los recursos
del hardware, pero para simples aplicaciones yo lo veo innecesario más de agregar incompatibilidad para SOs de 32-bits. una pequeña cosa
a tomar en consideración es que hay que recordar que los ejecutables para 64-bits son más grandes en tamaño eso es debido a como
se codifican las instrucciones más que todo las direcciones de memoria , la posibilidade de valores inmeadiatos de 64-bits, etc.


Título: Re: ¿Cómo crear un Windows Form?
Publicado por: BloodSharp en 17 Marzo 2014, 22:22 pm
Perdona mi osadía, pero WinForms no es un winapi puro... es parte del framework de .NET.

Cierto, pero yo no estaba hablando de Windows Forms sino que le estaba dando un link al usuario donde se podían hacer aplicaciones en ventana... Fijate que Meta escribió hacer Windows Form con win32 (que sería winapi) que en todo caso el se confunde con los términos o no sabe que no es lo mismo :P


B#