Este tutorial no pretende ense�ar el lenguaje C++ ni tampoco c�mo usar alg�n compilador en particular (Borland C++, Visual C++, BCC-Win32, etc...). Sin embargo me tomar� un momento en el ap�ndice para dar algunas notas sobre como usar los compiladores que conozco.
Si no sabes que es una macro o que que es typedef o si no sabes c�mo funciona la sentecia switch(), entonces te recomiendo que primero leas un buen libro o tutorial sobre el lenguaje C.
�Los fuentes inclu�dos en el archivo zip no son opcionales! No he incluido todo el c�digo en el tutorial, solo aquel que es relevante para lo que estoy explicando en ese momento. Para ver como este c�digo se integra con el resto del programa debes mirar el codigo fuente incluido en el archivo zip.
Y segundo:
Leelo todo! Si tienes alguna pregunta durante una secci�n del tutorial, solo ten un poco de paciencia ya que esta podr�a ser respondida en el resto del mismo.
Otra cosa para recordar es que si tienes alguna pregunta sobre un tema A �sta podr�a finalmente ser respondida en una discusi�n de B o C o quiz�s D. Por lo tanto si tienes alguna duda sigue leyendo el tutorial.
OK, Pienso que esto son todos los consejos que tengo que dar por el momento. Adelante...
Recuerda compilar esto como C, no como C++. Esto probablemente no importe pero debido a que todo el c�digo es C puro tiene sentido comenzar por el camino correcto. En muchos casos todo lo necesario es simplemente poner el c�digo en un archivo con extensi�n .c en vez de .cpp. Si todo esto te marea simplemente guarda el archivo con el nombre test.c y listo.
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL, "Goodbye, cruel world!", "Note", MB_OK);
return 0;
}
Si esto no funciona, tu primer paso es leer que errores obtuviste y si no los entiendes b�scalos en la ayuda o en alg�n documento que acompa�e tu compilador. Aseg�rate de haber especificado "GUI Win32" y no "Console" dentro de la opci�n project/compile/target de tu compilador. Desafortunadamente no puedo ayudarte mucho con esta parte ya que los errores y c�mo corrregirlos var�an de compilador en compilador (y de persona en persona).
Quiz�s obtengas algunos "Warnings" dici�ndote que no has usado los par�metros provistos en WinMain( ), pero esto est� bien. Ahora que sabemos que puedes compilar un programa veamos esta peque�a porci�n de c�digo:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
WinMain( ) es en Windows el equivalente al main( ) de DOS o UNIX. Es ah� donde los programas comienzan su ejecuci�n. Los par�metros son los siguientes:
HINSTANCE hInstanceHINSTANCE hPrevInstanceNULL) en programas Win32.
LPSTR lpCmdLineint nCmdShow
hInstance es usado para cosas como cargar recursos y cualquier otra tarea que sea realizada en una base por-modulos. Un m�dulo puede ser el archivo .EXE cargado en memoria o una librer�a DLL cargada en tu programa. En la mayor parte de este tutorial (por no decir todo el tutorial) habr� un solo m�dulo del cual preocuparse: el EXE.
hPrevInstance es usado en Win16 como handle a la instancia de ejecuci�n anterior (si la hubo). Esto ya no se aplica en Win32 por lo tanto ignoramos este par�metro.
WINAPI especifica una convenci�n de llamada y es definida como stdcall. No te preocupes si no sabes que sigifica esto ya que no nos afectar� dentro del alcance de este tutorial. Solo recu�rdalo.
Seguramente has encontrado que muchos de los tipos de datos tienen definiciones espec�ficas de windows, UINT para unsigned int (entero no signado) LPSTR para char*, etc...lo que elijas depende de ti. Si te sientes mas c�modo utilizando char* en lugar de LPSTR eres libre de hacerlo. Solo aseg�rate bien de que tipo de dato se trata antes de substituir algo.
S�lo recuerda algunas cosas y luego ser� f�cil de interpretar. El prefijo LP representa Long Pointer (Puntero Largo). En Win32 la parte larga es obsoleta por lo tanto no te preocupes por ella. Si no conoces que es un puntero puedes hacer lo siguiente: 1) Buscar un tutorial de C, o 2) Seguir adelante y saltearte un parte. Realmente recomiendo la primer opci�n, aunque muchas personas elijen la segunda... Despu�s no digas que no te avis�.
La letra C que sigue luego de LP indica que se trata de un puntero "Constante". Por lo tanto LPCSTR representa "Long Pointer to Const String" o "Puntero Largo un String Constante" pero como ya dijimos, en Win32 podemos ignorar la parte "long" as� que esto podr�a leerse "Puntero a un String Constante", uno que no se puede modificar. Por otro lado LPSTR no es constante y puede ser modificado.
Quiz�s has visto una "T" ah� en medio. No te preocupes por esto por ahora, a menos que intencionalmente est�s trabajando con UNICODE, no significa nada.
Version en espa�ol: Federico Pizarro - 2003.