[C con Clase] Problema con archivos de recursos
Steven Davidson
srd4121 en njit.edu
Dom Jun 1 19:53:28 CEST 2008
Hola Ariel,
ariel batista wrote:
> no tengo idea como funcionan, estaba haciendo el menu, con este
> metodo y no puedo incluirlo usando #include, no me funciona, ni
> tampoco usando wincl.lpszMenuName = menu; y tampoco dentro de la
> funcion CreateWindowEx(); desearia saber como funciona, si alguien
> pudiera ayudarme...........
>
Sugiero consultar el curso del API de MS-Windows. En particular, puedes
mirar el capítulo 5. El enlace es:
http://winapi.conclase.net/curso/index.php?cap=005c#MEN1_FICHREC Para
un fichero de recursos algo más complicado, puedes consultar el capítulo
6 acerca de cuadros de diálogo y ficheros de recursos. El enlace es:
http://winapi.conclase.net/curso/index.php?cap=006#DIAL_FICHREC
En cuanto a tu caso particular, creo que estabas intentando incluir el
fichero de recursos en el código fuente. Esto no es así. El fichero de
recursos es un fichero aparte con la extensión ".rc". El compilador de
recursos es quien se encarga de traducir este fichero. Ten muy presente
que el fichero ".rc" no tiene NADA que ver con C/C++ ni con el
compilador de C/C++. Es cierto que el ".rc" se parece a C, pero no te
dejes engañar por tal apariencia. Puedes pensar que estamos usando dos
lenguajes: C/C++ para crear la aplicación y RC para los ficheros de
recursos.
La asignación que has dado es incorrecta. Debería ser así:
wincl.lpszMenuName = "menu";
Cuida que el nombre coincide exactamente con el nombre que pusiste en el
fichero de recursos; o sea, "Menu" es diferente a "menu".
> tambiem kisiera saber si para crear un cuadro de dialogo es
> obligatorio hacerlo usando archivos de recursos....
>
No. No es obligatorio, pero sí es aconsejable. Si de verdad quieres
crear cuadros de diálogo sin el fichero de recursos, entonces debo
advertirte que no es una tarea muy sencilla. Deberás invocar la macro
'DialogBoxIndirect()' o la función 'DialogBoxIndirectParam()'. Uno de
los parámetros es una estructura que contiene información acerca del
cuadro de diálogo (DLGTEMPLATE) y a continuación tienes otra estructura
(DLGITEMTEMPLATE) para cada uno de sus controles.
No me gustaría extenderme con todo esto, porque sinceramente es algo
complicado. Si de verdad necesitas saber esto, lo explicaré en otro mensaje.
Espero que todo esto te sirva.
Steven
Más información sobre la lista de distribución Cconclase