Programacion grafica C++

Iniciado por Tengoku, 1 Junio 2010, 02:55 AM

0 Miembros y 1 Visitante están viendo este tema.

Tengoku

Gente, soy nuevo en esto y tengo un pequeño problema al intentar utilizar el modo grafico del c++. Para empezar les mando el codigo de ejemplo. Los errores que menciono aparecen en muchos codigos ejemplo de los que he visto de la libreria graphics.h.

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
void main(void)
{
int monitor=DETECT, modo;
initgraph(&monitor,&modo," ");
gotoxy(1,23);printf("getmaxx()=%d",getmaxx());
gotoxy(1,24);
printf("getmaxy()=%d",getmaxy());
setcolor(YELLOW);
line(0,0,50,50);
setcolor(WHITE);
circle(100,200,30);
setfillstyle(LINE_FILL,RED);
floodfill(100,200,WHITE);
rectangle(200,100,300,200);
setfillstyle(HATCH_FILL,BLUE);
floodfill(250,150,WHITE);
setcolor(GREEN);
settextstyle(GOTHIC_FONT,HORIZ_DIR,5);
outtextxy(330,100,"Gothic");
setcolor(CYAN);
settextstyle(SANS_SERIF_FONT,VERT_DIR,7);

outtextxy(330,200,"Hola?");
getch();
closegraph();
return;
}


No importa lo que deberia despliegar, cuestion, que no lo hace. Para empezar me dice que main debe retornar int, usando el dev-c++. Por lo que yo se, esto es debido a las normas de estandarizacion. Sin embargo todos los codigos que encuentro tienen valor void de retorno.

Despues, en todos lados donde lei, decia que habia que declarar una variable int monitor = DETECT, para que el programa se fije el tipo de monitor que uno tenia... asi como podia colocar int monitor = VGI, en caso de que asi fuese. El tema es que el programa me tira error ahi tambien y me dice que "DETECT" no esta definida.

Sinceramente no entiendo como hacer, si hay algo mal o lo que fuese XD. Si alguien puede darme una mano, guiarme... o simplemente decirme de algun libre que explique como hacer esto se lo agradeceria

Littlehorse

Bueno, vamos por partes.  ;D

Citarutilizar el modo grafico del c++.

El codigo que expones es C, no C++. Ten en cuenta que son dos lenguajes distintos.

CitarPor lo que yo se, esto es debido a las normas de estandarizacion. Sin embargo todos los codigos que encuentro tienen valor void de retorno.

Efectivamente, y todos esos códigos son erróneos. Producen comportamiento indefinido sea cual sea el sistema operativo en el que estén ejecutándose.

Las librerías que queres utilizar son obsoletas, así que como recomendación te diría que busques otra opción, por ejemplo:


U otra, la que mas se adecue a tus necesidades.

También ten en cuenta que trabajar con interfaces antiguas como la consola es perder el tiempo.

En cuanto a los errores del código que pusiste, la mayoría son a causa de las librerías que utilizas (como conio). Estas son especificas de Borland, y cualquier otro entorno puede implementarlas de otra forma (o no hacerlo en absoluto).

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Tengoku

#2
Ok, bueno... listo... "graphics.h" al tacho =P. Gracias por el dato ^^.

Ahora, otra consulta... Por mi cuenta y gustos personales, empezaria con WINAPI, por cuestiones de manejo de windows. Sin embargo segun tu experiencia... o la de cualquier otro miembro del foro. Si quisiese utilizar interfaces graficas, cual de todas esas opciones es la que deberia empezar a aprender primero?

Desde ya, muchas gracias

Littlehorse

Si la idea es el manejo de Windows, WINAPI debería ser la primer opción. De esta forma vas a poder analizar y comprender en forma mas profunda el funcionamiento interno de las aplicaciones en ese sistema.

Por supuesto las interfaces complejas pueden volverse tediosas ya que básicamente tenes que codificar todo. Por eso luego de asimilar los preceptos básicos del desarrollo de interfaces, puedes pasar a algún otro framework que alivie la tarea en el desarrollo, como MFC u alguno multi-plataforma como QT.

Saludos!
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Foxy Rider

Citartengo un pequeño problema al intentar utilizar el modo grafico del c++

Tanto C como C++ son una especificación de un lenguaje, no tienen modo gráfico ...  ni tampoco tiene definido en su estándar una librería gráfica ...
pero si, gente hizo librerías gráficas en C y C++ como esa librería en C que planteás ...

Sobre lo que dijo Littlehorse, las funciones de consola de WinAPI están definidas acá -> http://msdn.microsoft.com/es-ar/library/ms682073%28VS.85%29.aspx
pero, te diría que tomes otros caminos, como ncurses (o Qt si querés algo gráfico), ya que es una librería que para este fin en particular sirve y además es multi plataforma, lo cual permitiría que tu código funcione más que en solamente Windows ..

pero también es correcto que vas a aprender más de un sistema si usás su API de forma general (no solo para consola, claro está) y limitándote solo a esa plataforma ..

Citar
También ten en cuenta que trabajar con interfaces antiguas como la consola es perder el tiempo.

Acá es cuando digo "falacia" y sigo con "depende del problema", no llamaría "antiguo" a algo como la consola ...  aunque sí, si vas a estar solo en windows, es así (donde el entorno gráfico está enquistadísimo en el sistema y no separado como un módulo más)

Espero que no se hayan tomado mal mis caprichos de programador *NIX (todo lo dije con buena intención y con 0 intención de flamear), pero me parece mejor dar una visión más neutra y no tan "Windows es todo y crea las pautas de un desarrollador" (si llevamos más allá la charla, te diría que Windows es el invitado de mal gusto dentro de la lista de sistemas operativos, pero ese es otro tema ...)

Saludos.

Littlehorse

CitarAcá es cuando digo "falacia" y sigo con "depende del problema", no llamaría "antiguo" a algo como la consola ...  aunque sí, si vas a estar solo en windows, es así (donde el entorno gráfico está enquistadísimo en el sistema y no separado como un módulo más)

Dudo que comprendas el correcto uso de "falacia", de lo contrario hubieses utilizado otro termino.
Sin embargo igualmente creo haber entendido la idea que quisiste expresar, he de decir que no la comparto para nada.

Obviamente en determinadas tareas una consola posiblemente basta y sobra, por lo tanto una interfaz gráfica no seria necesaria. No obstante, ese hecho no implica que uno tenga que perder el tiempo en los aspectos estéticos de una interfaz antigua (si, y bastante) como lo es la consola. Esto cabe para cualquier sistema operativo.

CitarEspero que no se hayan tomado mal mis caprichos de programador *NIX (todo lo dije con buena intención y con 0 intención de flamear)

No veo la carencia de neutralidad en lo que yo dije en el post anterior, ya que en la mención de WINAPI aclare "Windows" y luego mencione QT como opción multi-plataforma. Sin mas, en tu post basicamente mencionaste lo mismo que yo ya había hecho, con la diferencia que sumaste alguna que otra critica hacia Windows (para variar  :D).

En mi diccionario personal, flamear tiene una sola definición: Hacer un post que no sume nada a la discusión principal, y de paso, agregar una critica polémica que no tiene nada que ver con el tema.
Te creo que no hayas tenido la intención de hacerlo, pero lamentablemente no se noto.

Citar(si llevamos más allá la charla, te diría que Windows es el invitado de mal gusto dentro de la lista de sistemas operativos, pero ese es otro tema ...)

Lo sera en tu opinión personal. Por lo que respecta a esta sección no solo no tiene que ver nada con el tema si no que ademas decir algo así sin fundamentos es algo bastante "tosco". Y no digo que no tengas tus fundamentos, pero si no los vas a exponer entonces no tiene ningún sentido que lo hayas dicho. No todo lo que pasa por tu cabeza tiene que pasar por tus dedos.
Y obviamente tampoco te estoy diciendo que expongas tus fundamentos, simplemente que si lo haces, lo hagas en la sección adecuada. ;D

Y todo esto con la mejor onda, simplemente que tu post no me gusto para nada. Podrías haber hecho una opinión mucho mas adecuada y útil al tema (porque se, que podrías haberlo hecho) que venir a despotricar con todo lo que empiece con W*.

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.