/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Problema con estructura INITCOMMCONTROLSEX en API

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Ninurta



Registrado: 04 Oct 2004
Mensajes: 13

MensajePublicado: 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í

MensajePublicado: 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

MensajePublicado: 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
Yahoo Messenger
Ninurta



Registrado: 04 Oct 2004
Mensajes: 13

MensajePublicado: 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

MensajePublicado: 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í

MensajePublicado: 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

MensajePublicado: 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í

MensajePublicado: 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

MensajePublicado: 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í

MensajePublicado: 18/10/2004 11:18 pm
Título:

ich bin gespannt....
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com