[C con Clase] Corrección a Rar

Steven Davidson srd4121 en njit.edu
Vie Dic 2 00:52:52 CET 2011


Hola Segundo,

2011/12/1 Segundo Henriquez Monardes <supersegua en gmail.com>:
> Steven, disculpame en el archivo comprimido que te envié me falto el archivo de recurso.
> Ahora te enviop el proyecto bien.
> SH
>

Muy bien. He visto el código fuente. Hay ciertos matices a considerar.

- Sugiero invocar 'InitCommonControlsEx()', como te expliqué antes.
Para usar esta función, tendrás que #definir la constante simbólica
'_WIN32_IE' antes de #incluir <commctl.h>. Necesitas que el valor sea
0x0300 o mayor. Por ejemplo,

#define _WIN32_IE 0x0700

#include <windows.h>
#include <commctrl.h>
#include "dtcodigo.h"
...
int WINAPI WinMain( ... )
{
  INITCOMMONCONTROLSEX icc = { sizeof(INITCOMMONCONTROLSEX), ICC_DATE_CLASSES };
  if( !InitCommonControlsEx( &icc ) )  return 0;
  ...
}

- En el fichero de recursos, escribes:

CONTROL ""     , CbxDate , "DATETIMEPICK_CLASS", DTS_SHORTDATEFORMAT |
WS_CHILD | WS_TABSTOP | WS_VISIBLE, 30, 4,100,60

Esto es incorrecto. El nombre de la clase es la constante,
'DATETIMEPICK_CLASS'. Es decir, se trata de una constante, no de una
cadena literal de caracteres. Escribe esto, en su lugar,

CONTROL ""     , CbxDate , DATETIMEPICK_CLASS, DTS_SHORTDATEFORMAT |
WS_CHILD | WS_TABSTOP | WS_VISIBLE, 30, 4,100,60

- Aconsejo que te acostumbres a usar Unicode. Puedes definir la
constante simbólica 'UNICODE' antes de #incluir los ficheros de
cabecera. Esto es,

#define UNICODE

- Esto significa que cualesquier cadenas de caracteres deberían ser de
tipo 'TCHAR'. Por ejemplo,

TCHAR szClassName[ ] = TEXT("WindowsApp");
...
wincl.lpszMenuName = TEXT("Menu");
...
hwnd = CreateWindowEx (
           0L,
           szClassName,
           TEXT("DateTimePick32"),
           ... );
...
DialogBox( hInstance, TEXT("DlgPrueba"), hwnd, SubDateTime );

Como puedes ver, uso la macro 'TEXT()' por si acaso hay que convertir
esa cadena de caracteres ASCII a Unicode.


Espero haber aclarado las dudas.

Steven




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