[C con Clase] Win32 sin ficheros de recursos
Salvador Pozo
salvador en conclase.net
Lun Feb 26 12:03:49 CET 2007
El pasado 2007-02-26 10:47:27, Ferran Ferri escribió:
FF> Hola a todos. Me preguntaba si es posible crear, con win32, guis con
FF> botones, texto, iconos, etc... sin usar ficheros de recursos. Ultimamente
FF> leo tutoriales de win32 pero o bien code blocks no gestiona bien los
FF> recursos, o usa un sistema diferente de usarlos o algo asi. La cosa es que
FF> no me funcionan, y no tengo manera de saber cual es el fallo (un simple
FF> sysntax error, en la linea). Asi que voy a ver si es posible crear ventanas
FF> sin usarlos.
FF> Existe algun documento o tutorial que explique esto?
Hola:
Es relativamente simple insertar controles en cualquier ventana usando las funciones CreateWindow o CreateWindowEx, tan sólo hay que saber el nombre de la clase de ventana a la que pertenece el control.
Por ejemplo, los botones pertenecen a la clase "BUTTON" y los combo boxes a "COMBOBOX", etc.
Estos temas se tratan en los próximos capítulos del curso del WinAPI de nuestra página, que espero estén disponibles en breve (dias o semanas, depende del tiempo que pueda dedicarle).
Mientras tanto, puedes experimentar con esas funciones. La parte lógica para insertar controles es al procesar los mensajes WM_CREATE o WM_INITDIALOG, para ventanas o cuadros de diálogo, respectivamente.
Para insertar, por ejemplo, un control de edición, podemos usar esta llamada:
case WM_CREATE:
hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
/* Insertar control Edit */
hctrl = CreateWindow(
"EDIT", /* Nombre de la clase */
"", /* Texto del título, no tiene */
ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, /* Estilo */
36, 20, /* Posición */
120, 20, /* Tamaño */
hwnd, /* Ventana padre */
(HMENU)ID_TEXTO, /* Identificador del control */
hInstance, /* Instancia */
NULL); /* Sin datos de creación de ventana */
/* Inicialización de los datos de la aplicación */
SetDlgItemText(hwnd, ID_TEXTO, "Inicial");
SetFocus(hctrl);
return 0;
En este ordenador no tengo instalado CodeBlocks, pero en casa sí. Intentaré ver qué problema tiene este IDE con los ficheros de recursos.
Hasta pronto.
--
Salvador Pozo (Administrador)
mailto:salvador en conclase.net
Más información sobre la lista de distribución Cconclase