[C con Clase] Cómo utilizar Listview en Dev-c++

Steven Davidson steven en conclase.net
Mie Ene 10 22:51:18 CET 2007


Hola Luis,

El pasado 2007-01-10 20:10:13, luis escribió:
 
l> Tambien he utilizado el CommCtrl.h que tengo instalado de Visual C++ 2005 colocandolo en el include de mi instalacion del Dev o con la ruta completa

Esto no es aconsejable. Los ficheros de cabecera no tienen por qué ser compatibles entre diferentes compiladores. Es posible que funcione, pero no lo aseguraría. El fichero de <commctrl.h> de Dev-C++ funciona bien y no tiene por qué ser sustituido por otro de VS.NET.

l> Ese ejemplo que me has enviado es el que ya he utilizado en ocasiones anteriores. Desde el VS.NET 2005
l> sí que funciona.
l> Después he vuelto a poner el commctrl.h que habia renombrado, o sea, el que tenia yo 
l> desde el principio. Pero me vuelve a dar error en INITCOMMONCONTROLSEX icex;

Seguramente, el problema está en la versión de IE que indicas al compilar. Tanto la estructura 'INITCOMMONCONTROLSEX' como la función 'InitCommonControlsEx()' sólo existen en "comctl32.dll" a partir de la versión 4.70. Por esta razón, debes indicar una versión posterior a 3.00 para que el precompilador defina la estructura y declare esta función. Esto ocurre con muchas otras entidades acerca de los controles, ya que algunos existen ahora pero no originalmente y por tanto su inclusión es acondicionada por la versión que te interesa.

La solución es definir la constante simbólica '_WIN32_IE' con un valor mayor a 0x0300 antes de incluir el fichero de cabecera <commctrl.h>. Por ejemplo,

#define _WIN32_IE 0x0500   // Versión 5.00 de "comctl32.dll"
#include <commctrl.h>

Ahora te debería compilar correctamente. También puedes asegurarte que la versión de MS-Windows NT sea elevada. Por ejemplo,

#define _WIN32_WINNT 0x0501   // Versión 5.01 de MS-Windows NT y compatibles


Recuerda que tendrás que indicar al enlazador que use la biblioteca de importación "libcomctl32.a" escribiendo "-lcomctl32".


Espero que esto te sirva.

Steven


Más información sobre la lista de distribución Cconclase