Red de conocimiento informático - Conocimiento informático - Cómo configurar el posprocesamiento en la programación ug

Cómo configurar el posprocesamiento en la programación ug

1. Cree el programa DLL de ObjectARX

1. Primero seleccione "MFC AppWizard (DLL)" en las opciones del proyecto, luego seleccione MFC Extension DLL y luego ingrese el nombre del proyecto. p>

2. En la pestaña "General" del cuadro de diálogo "Configuración del proyecto", seleccione "Usar MFC en una DLL compartida" en el campo "Clases de Microsoft Foundation". Abra el archivo creado por el archivo de proyecto .cpp de AppWizard, elimine la macro AFX_EXTENSION_MODULE y agregue la macro AC_IMPLEMENT_EXTENSION_MODULE (emx). Emx se utiliza para proporcionar recursos predeterminados y recursos de módulos y cambiar el estado de los recursos. Y elimine el código innecesario y agregue el código necesario (que se describe más adelante)

4. En el elemento Etiqueta de enlace, ingrese el nombre de la aplicación compilada en el elemento "Nombre del archivo de salida" en la columna "General", con el sufijo. .arx

5. En el elemento Etiqueta de enlace, en la columna "Salida", ingrese "0x1c000000" en el elemento "Dirección base" e ingrese "DllEntryPoint@12" en el "Símbolo de punto de entrada". " elemento

6. En el elemento de la pestaña C/C, seleccione "DLL multiproceso" del elemento "Usar biblioteca en tiempo de ejecución" en la columna "Generación de código"

7. En el elemento de la pestaña C/C, seleccione "Preprocesador". Defina _WINDLL, _AFXDLL en la columna

2. Ejecución del estado del módulo MFC y procesamiento de recursos

En cada módulo (EXE, DLL) que utiliza Microsoft Foundation Classes (MFC), existe un tipo de datos "globales", y MFC se basa en estos datos globales para realizar operaciones correctas. Estos datos globales se denominan estado del módulo MFC. Las aplicaciones ARX diseñadas como DLL de extensión suelen asumir que el estado actual del módulo es el de AutoCAD. Se debe confirmar que el estado del módulo de AutoCAD se ha establecido como actual. La aplicación ARX puede lograr esta función llamando a AFX_MANAGE_STATE(AfxGetAppModuleState()). CacModuleResourceOverride crea una variable, el constructor intercambia un nuevo proveedor de recursos y el destructor intercambia el recurso predeterminado. En AutoCAD, CAcExtensionModule proporciona el identificador de ubicación de la estructura AFX_EXTENSION_MODULE y realiza un seguimiento de los recursos del módulo y los recursos predeterminados. Sólo manejando correctamente la plataforma de transferencia de recursos el programa ARX podrá estar libre de problemas. Agregue la macro AC_IMPLEMENT_EXTENSION_MODULE (emx) a ARX, puede cambiar los recursos del módulo a través de emx.AttachInstance y restaurar los recursos predeterminados a través de emx..DetachInstance().

3. El código marco de ARX

es el siguiente:

#include "stdafx.h"

#include "AsdkAcUiSample .h"

#include "AsdkAcUiDialogSample.h"

#include "AcExtensionModule.h"

#ifdef _DEBUG

#define nuevo DEBUG_NEW

#undef THIS_FILE

carácter estático THIS_FILE[] = __FILE__;

#endif

extern "C" HWND adsw_acadMainWnd( );

// Defina el único objeto del módulo de extensión

AC_IMPLEMENT_EXTENSION_MODULE(theArxDLL);

static void initApp()

{

CAcModuleResourceOverride resOverride;

}

descarga estática vacía()

{ }

extern "C" int APIENTRY

DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)

{

UNREFERENCED_PARAMETER(lpReserved)

if (dwReason); == DLL_PROCESS_ATTACH )

{ theArxDLL.AttachInstance(hInstance);

else if (dwReason == DLL_PROCESS_DETACH)

{ theArxDLL.DetachInstance();

return 1; // ok

}

extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* appId)

{

cambiar( msg )

{

caso AcRx::kInitAppMsg:

acrxDynamicLinker-gt;unlockApplication (appId)

acrxDynamicLinker-gt; registrarAppMDIAware(appId);

initApp()

romper

caso AcRx: :kUnloadAppMsg:

unloadApp();

romper;

caso AcRx::kInitDialogMsg:

romper; p>predeterminado:

romper;

>

}

return AcRx::kRetOK;

}

Puedes agregar tus propias funciones de programa aplicando el código de marco anterior

4. Asistente de aplicación

Hay un asistente de aplicación en el SDK de ObjectARX 2000 que puede generar código de marco de programa ARX