[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