// [!output APP_IMPL] : define los comportamientos de las clases para la aplicación. // #include "stdafx.h" #include "[!output APP_HEADER]" #include "[!output DIALOG_HEADER]" #ifdef _DEBUG #define new DEBUG_NEW #endif // [!output APP_CLASS] BEGIN_MESSAGE_MAP([!output APP_CLASS], [!output APP_BASE_CLASS]) ON_COMMAND(ID_HELP, &CWinApp::OnHelp) END_MESSAGE_MAP() // Construcción de [!output APP_CLASS] [!output APP_CLASS]::[!output APP_CLASS]() { [!if CONTEXT_HELP && HELPSTYLE_HTML] EnableHtmlHelp(); [!endif] // TODO: agregar aquí el código de construcción, // Colocar toda la inicialización importante en InitInstance } // El único objeto [!output APP_CLASS] [!output APP_CLASS] theApp; [!if AUTOMATION] const GUID CDECL BASED_CODE _tlid = [!output LIBID_STATIC_CONST_GUID_FORMAT]; const WORD _wVerMajor = 1; const WORD _wVerMinor = 0; [!endif] // Inicialización de [!output APP_CLASS] BOOL [!output APP_CLASS]::InitInstance() { [!if MANIFEST] // Windows XP requiere InitCommonControlsEx() si un manifiesto de // aplicación especifica el uso de ComCtl32.dll versión 6 o posterior para habilitar // estilos visuales. De lo contrario, se generará un error al crear ventanas. INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // Establecer para incluir todas las clases de control comunes que desee utilizar // en la aplicación. InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); [!endif] [!output APP_BASE_CLASS]::InitInstance(); [!if SOCKETS] if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED); return FALSE; } [!endif] [!if AUTOMATION || ACCESSIBILITY] // Inicializar bibliotecas OLE if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } [!endif] [!if ACTIVEX_CONTROLS] AfxEnableControlContainer(); [!endif] // Inicialización estándar // Si no utiliza estas características y desea reducir el tamaño // del archivo ejecutable final, debe quitar // las rutinas de inicialización específicas que no necesite // Cambie la clave del Registro en la que se almacena la configuración // TODO: debe modificar esta cadena para que contenga información correcta // como el nombre de su compañía u organización SetRegistryKey(_T("Aplicaciones generadas con el Asistente para aplicaciones local")); [!if AUTOMATION] // Analizar línea de comandos para automatización o modificadores reg/unreg. CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // La aplicación se inició con el modificador /Embedding o /Automation. // Ejecutar la aplicación como servidor de automatización. if (cmdInfo.m_bRunEmbedded || cmdInfo.m_bRunAutomated) { // Registrar generadores de clases mediante CoRegisterClassObject(). COleTemplateServer::RegisterAll(); } // La aplicación se inició con el modificador /Unregserver o /Unregister. // Quitar las entradas del Registro. else if (cmdInfo.m_nShellCommand == CCommandLineInfo::AppUnregister) { COleObjectFactory::UpdateRegistryAll(FALSE); AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor); return FALSE; } // La aplicación se inició en modo independiente o con otros modificadores (por ejemplo /Register // o /Regserver). Actualizar entradas de Registro, incluida typelibrary. else { COleObjectFactory::UpdateRegistryAll(); AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid); if (cmdInfo.m_nShellCommand == CCommandLineInfo::AppRegister) return FALSE; } [!endif] [!output DIALOG_CLASS] dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: insertar aquí el código para controlar // cuándo se descarta el cuadro de diálogo con Aceptar } else if (nResponse == IDCANCEL) { // TODO: insertar aquí el código para controlar // cuándo se descarta el cuadro de diálogo con Cancelar } // Dado que el cuadro de diálogo se ha cerrado, devolver FALSE para salir // de la aplicación en vez de iniciar el suministro de mensajes de dicha aplicación. return FALSE; }