| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
Ninurta
Registrado: 04 Oct 2004 Mensajes: 13
| Publicado: 14/10/2004 5:02 am | | | Título: Problema con estructura INITCOMMCONTROLSEX en API |
| Hola a todos,
estoy escribiendo un programa con API que incluye una toolbar DateTimePick_class. Aquí muestro parte del código que inicia las estructuras necesarias, pero al compilarlo (utilizo GCC con Mingwall en windows 2000) me da este mensaje:
In function `WinMain': 311: `INITCOMMONCONTROLSEX' undeclared (first use in this function) 311: parse error before "icex" 313: `icex' undeclared (first use in this function)
Por supuesto al inicio del programa incluyo:
#include <windows.h> #include <commctrl.h>
El extracto del código es el siguiente:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wc; HWND hwnd; MSG Msg;
INITCOMMONCONTROLSEX icex; // linea 311
InitCommonControlsEx(&icex); // linea 313
icex.dwSize = sizeof(icex); icex.dwICC = ICC_DATE_CLASSES; ... ... ...
¿Alguien sabe a que se debe ese error?
Saludos ,
Ninurta |
|
| Volver arriba | |
 |
quique
Registrado: 30 Mar 2004 Mensajes: 720 Ubicación: Por ahí
| Publicado: 14/10/2004 5:10 am | | | Título: |
| Para utilizar dicha función necesitas tener a partir de cierta versión de windows más Internet Explorer
Los tienes instalados? Qué version de Windows tienes? Qué compilador utilizas?
Salu2 |
|
| Volver arriba | |
 |
alp

Registrado: 12 Abr 2004 Mensajes: 413
| Publicado: 14/10/2004 2:46 pm | | | Título: |
| Pon la siguiente línea al principio del fichero:
| Código: | #define _WIN32_IE 0x0501 |
Por cierto...¿no deberías rellenar la estructura ANTES de llamar a InitCommonControlsEx() ?
Un saludo. |
|
| Volver arriba | |
 |
|
Ninurta
Registrado: 04 Oct 2004 Mensajes: 13
| Publicado: 14/10/2004 10:44 pm | | | Título: |
| Para que no haya confusiones os dire que concretamente utilizo gcc version 3.2.3 (mingw special 20030504-1) en Windows2000 Pro con Explorer 6.0.
Desgraciadamente la instrucción | Código: | #define _WIN32_IE 0x0501 | no parece haber hecho ningún efecto. También he rellenado la estructura antes de llamar a INITCOMMONCONTROLSEX pero nada , da exactamente el mismo error que antes.
El codigo queda así:
#include <windows.h> #include <commctrl.h> #include "resource1.h"
const char g_szClassName[] = "myWindowClass";
#define _WIN32_IE 0x0501 ... ... ... int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wc; HWND hwnd; MSG Msg;
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(icex); icex.dwICC = ICC_DATE_CLASSES;
InitCommonControlsEx(&icex);
wc.cbSize = sizeof(WNDCLASSEX); wc.style = 0; ... ... ...
¿Otra idea?
Saludos |
|
| Volver arriba | |
 |
Ninurta
Registrado: 04 Oct 2004 Mensajes: 13
| Publicado: 15/10/2004 1:51 am | | | Título: |
| He hecho otra prueba con | Código: | #define _WIN32_IE 0x0501 |
al inicio del fichero y si que funcionó Alp, pero ahora me da otro error totalmente diferente a la hora de hacer el ejecutable:
C:\MinGW\bin>gcc -o app1 app_three1.o res1.o -mwindows
app_three1.o(.text+0xa95):app_three1.c: undefined reference to `InitCommonControlsEx@4'
Y aquí si que no tengo ni idea de lo quiere decir....
Saludos a todos |
|
| Volver arriba | |
 |
quique
Registrado: 30 Mar 2004 Mensajes: 720 Ubicación: Por ahí
| Publicado: 15/10/2004 3:16 am | | | Título: |
| Prueba lo siguiente: incluye el archivo "comctl.lib" en la compilación.
Salu2 |
|
| Volver arriba | |
 |
|
Ninurta
Registrado: 04 Oct 2004 Mensajes: 13
| Publicado: 17/10/2004 11:42 pm | | | Título: |
| Hola quique,
creo que ese debe ser el problema , pero el caso es que en mi carpeta de Mingwall no existe la comctl.lib , aunque he descargado el paquete mas reciente de win32 API de su pagina de internet no la encuentro por ningún lado.
¿Será que necesito descargar algo en concreto? ¿Cómo puedo saber que tengo todas las libraries necesarias?
Saludos |
|
| Volver arriba | |
 |
quique
Registrado: 30 Mar 2004 Mensajes: 720 Ubicación: Por ahí
| Publicado: 18/10/2004 2:47 am | | | Título: |
| En realidad, creo que la lib se llama COMCTL32.LIB, y está en la distribución normal del SDK. Prueba con esa librería....
Sorry por el nombre incorrecto anterior
Salu2 |
|
| Volver arriba | |
 |
Ninurta
Registrado: 04 Oct 2004 Mensajes: 13
| Publicado: 18/10/2004 5:25 am | | | Título: |
| Hola de nuevo ,
gracias por la información Quique , acabo de instalar el SDK. Espero que ahora vaya mejor la cosa.
Hasta otra |
|
| Volver arriba | |
 |
|
quique
Registrado: 30 Mar 2004 Mensajes: 720 Ubicación: Por ahí
| Publicado: 18/10/2004 11:18 pm | | | Título: |
| | ich bin gespannt.... |
|
| Volver arriba | |
 |
|
|