[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