Interfaz gráfica para programa en C

BEDI

Buenas, tenemos entre manos un proyecto bastante interesante que parte de un diseño de hardware, comunicación por USB, adquisición de datos y programación en C.

Lo que me gustaría es hacer una interfaz gráfica intuitiva para correr el programa bajo windows.

Hay algún programa especifico que ayude en esta tarea?

Si por el contrario hay que programarlo desde cero, alguna guía o tutorial sencillito?

Muchas gracias :)

cabron

En C tienes el API de Windows (muy bajo nivel, vas a tener que currar lo que no está escrito), y GTK+.

La mayoría hoy en día son para C++

erdanblo

Sin tener ni idea, creo que necesitas conectar con librerias gráficas, por ejemplo GTK+ o QT.

NeB1

en C vas a flipar para hacer un entorno gráfico >.<

dr_Rouman

Si vas a querer diálogos, menús, etc...jodido.

Si es sólo mostrar gráficos, controlar un poco el teclado y algún menú MUY simple (rollo el contextual de botón derecho), puedes usar glut + openGL. Pero ya te digo que esto no incluye nada de cajas de texto para meter datos...etc

GTK, QT y wxWidgets son de las más adecuadas, pero claro, no valen en C...

cabron

#5:

GTK si vale en C, de hecho C es el lenguaje para el que está hecho GTK, aunque tenga soporte para C++

dr_Rouman

Ahm, pues creía que no...

Tenía la idea de que todos las librerías de interfaces "grandes" habían tirado para C++ directamente, por el tema de la comodidad de usar objetos.

Pues con eso teóricamente podría ir tirando.

He encontrado un tuto, pero es para gnu/linux:

http://linpox.wordpress.com/2008/03/14/programar-con-gtk-lenguaje-c-parte-i/

dagavi

Yo en un proyecto que he tenido que hacer para la Universidad he usado SWT para Java, al ver lo bien que me iba (y desconocimiento que tengo de ello en C/C++) busqué si había algo parecido en C++ y vi que había como un port del mismo SWT para C++:

Una web con info que vi: http://eclipse.dzone.com/news/swt-c-now-available
y de donde se baja: http://www.pure-native.com/swtcpp/swtcamp.html

No lo he usado nunca pero bueno, ya que vi que esto existía a lo mejor te puede ayudar, pero no se como funciona (si bien, mal, si da buenos resultados, es eficiente, si directamente funciona, etc.)

Kartalon

De hecho con el Visual Studio tampoco es tanto dolor programar con la API de Windows en C. Eso sí, tendrás que tirar del manejo de handlets y demás, pero acudiendo a la referencia de Microsoft (MSDN) tampoco es el dolor máximo.

oZk4h

El año pasado en mi carrera (que es la misma que la tuya, vaya, o eso creo: ITI Electrónica Industrial) hicimos un proyecto con una tarjeta de adquisición de datos National Instruments, todo ello implementado en C/C++ con el entorno gráfico Borland C++, que viene a ser C con diversas partes gráficas (lenguaje de objetos creo que se llama), a las cuales tienes que meterle tú el código para que funcione. Lo mismo que tuvimos que hacer para comunicar la tarjeta con el PC, esto si que fue jodido, la verdad xD.

Este año tengo como PFC algo parecido pero con el Labview (programación gráfica ofc), que al ser del mismo fabricante que la tarjeta(la misma NI), pues es bastante fácil el tema de drivers y tal.

bLaKnI

Tio visual basic joder! Y luego lo desofuscas, a ver que pasa... xD

maRc

Hombre, mezclar C y C++ en un solo programa tampoco es tan complicado. De hecho, a un nivel "normal" lo único que tienes que hacer es programar a lo C, teniendo cuidado con las palabras reservados y un par de chorraditas más, y compilar con un compilador de C++.

Además, también puedes declarar las partes de C dentro de un "extern C {---}" en C++.

De todas maneras, ¿seguro que no podeis usar C++ solamente?

Para la interfaz, siempre que podais usar C++, yo tiraría por Qt, que son lo mejor de lo mejor :)

elkaoD

Usar el API de Windows para programación gráfica no es tan difícil como parece, es sólo ponerle empeño al principio para entenderlo, y luego sale sólo.

programacion api windows en google y tenemos... http://winapi.conclase.net/curso/

cabron

Un apunte, el API de Windows, no es que sea difícil, es que es tedioso (ojo, que yo nunca he creado una gui entera con tirando del API, pero he hecho suficiente para ver como es el tema). No tienes nada hecho, tienes que encargarte de cada puto detalle en el código tú mismo, lo que hace que sea un trabajo enorme. No es cuestión de dificultad, si no de tiempo y esfuerzo.

#12:

Qt tiene un inconveniente, y es que para usarlo de forma legal, estás obligado o bien a que tu proyecto sea de código abierto, o pagar la pastaza que te cuesta la licencia.

maRc

Vaya, no había caido en ese detalle. Pero bueno, a lo mejor vale la pena gastarse el dinero. O hacerlo abierto.

LOc0

Si no quieres complicarte la vida -> http://es.wikipedia.org/wiki/C%2B%2BBuilder (aunque ponga para C++ imagino que sabrás que puedes pasar de la POO :P) Te lo puedes bajar de aquí -> http://altd.codegear.com/download/Delphi_C++Builder2009/Delphi_C++Builder2009.iso

Pruebecilla de concepto -> http://www.megaupload.com/es/?d=J0XS5AXN

Otra opción es crear la chicha en C y compilarlo como DLLs y llamarlas desde una GUI hecha en Visual Basic por ejemplo...

Salu2 ;)

PD: como ya han comentado hacer una GUI a pelo con las funciones del API Win32 es un soberanísimo coñazo (funciones con doscientos mil parámetros, un montón de código repetido por todos lados, etc...).

7 días después
BEDI

Muchas gracias a todos por lsa respuestas. Por ahora me ha quedado bastante claro que hacer el interfaz gráfico mediante C es un autentico coñazo (que no dificil :P).

Pero la ultima respuesta de LOc0 me ha interesado mucho. Me podríais dar mas información hacerca de ese método?

Segun tengo entendido con visual basic es sencillo hacer el interfaz gráfico, pero mi programación va en C.

Gracias de nuevo, no esperaba tanta respuesta :)

EDIT: A ver que mire esto del C++Builder..., también se admiten opiniones al respecto para decidirme por algun método.

cabron

#17:

Lo que te dice loco, básicamente consiste en que tu programa en C en lugar de compilarse en un ejecutable, se compila en una librería. Esa libreria tiene que publicar algún método que sirva de punto de entrada, y ese método (o métodos) se podrá invocar desde otro programa que puede estar escrito en otro lenguaje. Puedes verlo como un #include entre programas.

Sobre como hacerlo, hay cantidad de información por Internet, empieza mirando la documentación de Microchof y luego ve resolviendo dudas especificas que te surjan.

http://support.microsoft.com/?scid=kb%3Ben-us%3B106553&x=7&y=14
http://msdn.microsoft.com/en-us/library/ms682507(VS.85).aspx

MaKi

#14

QT no es necesario hacer software libre todo lo que hagas con ella. (desde hace poco)

Fuentes :
http://softlibre.barrapunto.com/article.pl?sid=09/01/14/0849214&from=rss
http://www.pctux.com.ar/2009/01/relicenciamiento-de-qt-a-lgpl.html

P.D: GTK + GLADE es lo más fácil k existe si lo comparamos con el API de windows -_-

cabron

Y tan desde hace poco, la noticia es de enero de este año xD

Pues es una buena noticia que Qt vaya a estar disponible sin tener que pagar licencia pero me parece un poco extraño que pase a ser totalmente gratuita, seguro que seguirá habiendo una licencia para obtener soporte o algo de eso.

Soleil

Si sólo te interesa Windows, yo tiraría de WPF o WinForms con C# para el GUI, y C/C++ para la lógica, separando ambos. O bien, MFC con la API Win32 en VC++.

Si buscas multiplataforma, GTK, QT o WxWindows están bien. Particularmente encuentro la API de QT más intuitiva y bien diseñada que las otras dos, pero eso va por gustos.

Soltrac

Puedes intentar programar en Borland C++ o Visual C++ e intentar no utilizar nada de las ventajas de la POO de C++ (ojo, Borland C++ y Visual C++ integrado en Visual Studio son de pago, por lo q tendrás q tirar de métodos como el de Loco xDD)

La segunda opción es atacar directamente las APIs de Windows, pero te recomiendo infinitamente la primera.

Usuarios habituales

  • Soltrac
  • cabron
  • BEDI
  • maRc
  • oZk4h
  • dagavi
  • dr_Rouman