Visual C++ For Dummies

Estado
Cerrado para nuevas respuestas.

VictorV

LANero Fundador
Miembro del equipo
14 Abr 2001
1,088
el objetivo de este foro es desarrollar una sencilla aplicacion, en este caso una calculadora (como la de windows), en visual c++, empezando desde cero, yo ha programado en c++, pero solo en turbo C++, nada de visual.

Que dicen?, esta buena la propuesta?, quienes estarian dispuestos a colaborarnos?
 
jjejeje yo quiero aprender... a ver donde estan los gamines de la programacion...
 
Y no hay nadie más que sepa? Bueno, que más da.

Primero la teoría:

La forma en que se realizan aplicaciones en DOS y en sistemas operativos como Windows difiere en mucho. En DOS uno suele hacer aplicaciones de forma secuencial, mientras que en Windows se realizan de acuerdo a los eventos que ocurran en la aplicación.

Me explico: en DOS uno empieza el programa en la funcion main y después se va ejecutando linea por linea hasta llegar al final (claro esta, con ciclos, funciones y todo lo demás). En Windows lo que haces es declarar una serie de elementos, de los cuales el más importante es la ventana, y después recibir mensajes que te indican que ese objeto tiene que ser dibujado, o que el usuario hizo click encima, presiono una tecla u otras cosas por el estilo.

Lo que hacen los programas tradicionales en Windows es esperar a que llegue un mensaje, hacer lo que sea necesario y después "dormirse" hasta que llegue otro. Esto no se aplica a los videojuegos, estos trabajan todo el tiempo con sus propias cosas (en un ciclo donde se actualizan las posiciones de los objetos y se despliegan los graficos en pantalla) y procesan los mensajes de Windows cada vez que llegan (para darse cuenta de cuando se minimizo la ventana, o se cerro la aplicacion).

Los programadores de juegos normalmente solo necesitan crear la ventana de Windows, y de ahi en adelante comienzan a utilizar APIs (DirectX, OpenGL) y su propio código. Por esa razón, mi experiencia con la programación "estándar" en Windows es un poco escasa.

Primero voy a indicarles como uno puede crear la aplicacion en Windows mas sencilla posible: una unica ventana vacia. Y después ustedes me dicen si les parece más interesante hacer más cosas con la programación estándar win32, o mejor les enseño algo de Direct3D.

Ahora entremos a los detalles:

- Lo primero que tenemos que hacer es crear un nuevo proyecto en Visual Studio. Esto lo hacemos con "File->New", y en la pestaña Projects seleccionamos Win32 Application de la lista de tipos de aplicaciones posibles. También podemos usar Win32 Console Application, pero este tipo de programa funciona en la consola tipo MSDOS. No se olviden de especificar el nombre del Proyecto y la carpeta donde se va a alojar. Dado que estos programas son bastante voluminosos es aconsejable tener una carpeta para cada uno. Damos click en aceptar y finalmente elegimos que queremos un proyecto vacio.

- A nuestra derecha podemos visualizar los proyectos de dos maneras: por medio de la lista de clases y por medio de la lista de archivos. En la vista de archivos hacemos click secundario sobre Source Files y colocamos Add Files to Folder. Agregamos el archivo main.cpp (o como quieran llamarlo). Al hacer doble click sobre main.cpp se nos va a preguntar si queremos crear el archivo, a lo que responderemos afirmativamente.

- Y ahora si va el código (archivo anexo). Pueden compilar el proyecto entero con el boton Build y probarlo con Execute Program.

- Tanta cosa rara puede ser confuso para mas de uno. Traten de tomarselo con calma, intenten experimentar cambiando valores de cosas que se les hace familiares para ver que pasa, o presiona F1 para obtener más ayuda sobre alguna funcion de Windows.
Aqui van algunas pautas:

WinMain es como el main pero para Windows. Alli registras la clase de la ventana, creas la ventana con base a esa clase (incluso puedes crear mas de una con la misma clase) y recibes mensajes de Windows que se los pasas a la funcion de la ventana.

La funcion de la ventana recibe cada uno de los mensajes y decide que hacer en cada caso, cuando se trata de una accion de rutina que toda ventana hace, le mandas el mensaje al DefWindowProc (procedimiento por defecto de la ventana). Este se encarga automaticamente de hacer tareas que todas las ventanas necesitan hacer, tu solamente escribes el codigo de lo "raro" que hace tu ventana, por ejemplo, la entrada de datos del usuario o dibujar el contenido de la ventana.

Si les queda muy complicado, podemos hacer un análisis linea por linea del programa.
 
Haber mig, yo tengo una pregunta, no se supone que para Windows se usan las MFC? o ya el visual las autoimporta? no hay una ferencia de MFC clase por clase, como en java? como se manejan las excepciones?
 
Uno por uno:

MFC (Microsoft Foundation Classes) es un "wrapper" (envoltura) del verdadero Win32. Simplemente te hace la vida más fácil, pero no estoy muy interesado en programación estándar en Windows.
La documentación del MFC viene con el Visual Studio.

Sobre las excepciones. Bueno, no se mucho al respecto excepto:

unsigned long exceptCode; // Aqui guardamos el codigo de la excepcion

__try
{

// Inserta tu codigo aqui

}
__except( EvaluateException( exceptCode = GetExceptionCode() ) )
{
ExceptionHandler(exceptCode);
}

Donde EvaluateException es una funcion tuya que decide si va ignorar o no la excepcion, y ExceptionHandler es la funcion que realiza una accion cuando ocurre una excepcion (como mostrar un mensaje de error).
 
Se me olvido mencionar que si quieres usar MFC con Visual Studio no seleccionas Win32 Application sino MFC AppWizard (exe)
 
Estado
Cerrado para nuevas respuestas.

Los últimos temas