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.