[C con Clase] controle en WinApi

Steven Davidson srd4121 en njit.edu
Jue Dic 1 18:42:28 CET 2011


Hola Segundo,

2011/12/1 Segundo Henriquez Monardes <supersegua en gmail.com>:
> Hola.
> Soy programador autodidacta, empecé con C, después C++, en consola y no
> tenido problema alguno,
> después lo intenté con WinApi,  sin problema hasta que,  quice agregar el
> control "SysDatetimePick32", pero ahora si tengo problemas:
>

No es aconsejable usar este nombre para la clase. Deberías usar la
constante DATETIMEPICK_CLASS.

> Programa en C con WinApi32
> usando el IDE Dev-C++
>
> incluyo la cabecera "comctrl.h"

El nombre correcto es <commctrl.h>.

> y en menú herramientas - opción del compilador agrego
> -lcomctrl32.
>

El nombre correcto es "libcomctl32.a", por lo que deberías agregar al
enlazador la siguiente opción:

-lcomctl32

> Pero al ejecutar el programa resultante no muestra nada, ni siquiera la
> ventana de dialogo.
> Si alguien puede ayudarme, lo agradeceria
>

Si no aparece nada al ejecutar la aplicación, entonces posiblemente no
se ha cargado la DLL adecuada, que en este caso es "comctl32.dll". No
sé si lo has hecho, pero recuerda que debes invocar a la función
'InitCommonControlsEx()' pasando una estructura que debería contener
por lo menos la constante, 'ICC_DATE_CLASSES'. Esto es,

int WINAPI WinMain( ... )
{
  INITCOMMONCONTROLSEX icc = { sizeof(INITCOMMONCONTROLSEX), ICC_DATE_CLASSES };
  if( !InitCommonControlsEx( &icc ) )  return 0;
  ...
}

A la hora de crear el control, usa la constante 'DATETIMEPICK_CLASS'
para indicar la clase; esto es,

HWND hdtp = CreateWindowEx( 0L, DATETIMEPICK_CLASS, ... );


Sugiero que consultes MSDN para mayor información. El enlace es:
http://msdn.microsoft.com/en-us/library/bb761727(v=VS.85).aspx

Espero que esto te aclare las dudas. Si no, entonces como menciona
Israel, envíanos los códigos fuente y cualquier otra información que
creas que necesitemos.

Steven




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