如何设置CAD选项对话框的配置AcApProfileManagerReactor反应器
<pre name="code" class="cpp">如何设置CAD选项对话框的配置利用>反应器就可以设置// (C) Copyright 1999-2006 by Autodesk, Inc.
//
// Permission to use, copy, modify, and distribute this software in
// object code form for any purpose and without fee is hereby granted,
// provided that the above copyright notice appears in all copies and
// that both that copyright notice and the limited warranty and
// restricted rights notice below appear in all supporting
// documentation.
//
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.AUTODESK, INC.
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
// UNINTERRUPTED OR ERROR FREE.
//
// Use, duplication, or disclosure by the U.S. Government is subject to
// restrictions set forth in FAR 52.227-19 (Commercial Computer
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
// (Rights in Technical Data and Computer Software), as applicable.
//
#if defined(_DEBUG) && !defined(AC_FULL_DEBUG)
#error _DEBUG should not be defined except in internal Adesk debug builds
#endif
#include <rxregsvc.h>
#include <aced.h>
#include <dbxutil.h>
#include <acprofile.h>
#include <adslib.h>
#include "tchar.h"
// Define a class derived from AcApProfileManagerReactor to manage
// the notifications.
//
class AsdkProfileManagerReactor : public AcApProfileManagerReactor
{
public:
void currentProfileWillChange(const TCHAR *newProfile);
void currentProfileChanged(const TCHAR *newProfile);
void currentProfileWillBeReset(const TCHAR *curProfile);
void currentProfileReset(const TCHAR *curProfile);
void profileWillReset(const TCHAR *profName);
void profileReset(const TCHAR *proName);
};
// Define the notification functions
//
void
AsdkProfileManagerReactor::
currentProfileWillChange(const TCHAR *newProfile)
{
acutPrintf(_T("\nCurrent profile will change: %s"), newProfile);
}
void
AsdkProfileManagerReactor::
currentProfileChanged(const TCHAR *newProfile)
{
acutPrintf(_T("\nCurrent profile changed: %s"), newProfile);
}
void
AsdkProfileManagerReactor::
currentProfileWillBeReset(const TCHAR *curProfile)
{
acutPrintf(_T("\nCurrent profile will be reset: %s"), curProfile);
}
void
AsdkProfileManagerReactor::
currentProfileReset(const TCHAR *curProfile)
{
acutPrintf(_T("\nCurrent profile has been reset: %s"), curProfile);
}
void
AsdkProfileManagerReactor::
profileWillReset(const TCHAR *profName)
{
acutPrintf(_T("\nA non-current profile will be reset: %s"), profName);
}
void
AsdkProfileManagerReactor::
profileReset(const TCHAR *profName)
{
acutPrintf(_T("\nA non-current profile has been reset: %s"), profName);
}
void
aFunction()
{
acutPrintf(_T("This is AsdkProfileSample Test Application...\n"));
// Attach the reactor for the duration of this command. Normally
// this would likely be added upon application initialization.
//
AsdkProfileManagerReactor *pProfileRector =
new AsdkProfileManagerReactor();
acProfileManagerPtr()->addReactor(pProfileRector);
// Obtain the path for the registry keys and print it out.
//
TCHAR *pstrKey;
acProfileManagerPtr()->ProfileRegistryKey(pstrKey, NULL);
if (pstrKey != NULL) {
acutPrintf(_T("\nThe profiles registry key is: %s"), pstrKey);
acutDelString(pstrKey);
}
// Get the list of all profiles in the users configuration
// and print them out.
//
AcApProfileNameArray arrNameList;
int nProfiles =
acProfileManagerPtr()->ProfileListNames(arrNameList);
acutPrintf(_T("\nNumber of profiles currently ")
_T("in the user profile list is: %d"), nProfiles);
for (int i = 0; i < nProfiles; i++)
acutPrintf(_T("\nProfile name is: %s"), arrNameList);
// Copy the unnamed profile to the AsdkTestProfile
//
acProfileManagerPtr()->ProfileCopy(_T("AsdkTestProfile"),
_T("<<Unnamed Profile>>"),
_T("This is a test"));
// Reset the newly copied profile to AutoCAD defualts.
//
acProfileManagerPtr()->ProfileReset(_T("AsdkTestProfile"));
// Make this new profile current.
//
acProfileManagerPtr()->ProfileSetCurrent(_T("AsdkTestProfile"));
// Change a value in the profile. We'll just make the
// cursor big.
//
struct resbuf rbCursorSize;
rbCursorSize.restype = RTSHORT;
rbCursorSize.resval.rint = 100;
acedSetVar(_T("CURSORSIZE"), &rbCursorSize);
// Rename the profile to a new name.
//
acProfileManagerPtr()->ProfileRename(_T("AsdkTestProfile2"),
_T("AsdkTestProfile"),
_T("This is another test"));
// Export the profile.
//
acProfileManagerPtr()->ProfileExport(_T("AsdkTestProfile2"),
_T("./AsdkTestProfile2.arg"));
// Import the profile.
//
acProfileManagerPtr()->ProfileImport(_T("AsdkTestProfile3"),
_T("./AsdkTestProfile2.arg"),
_T("This is a copy of AsdkTestProfile2")
_T("by Exporting/Importing"),
Adesk::kTrue);
// Remove the reactor.
//
acProfileManagerPtr()->removeReactor(pProfileRector);
}
void
initApp()
{
acutPrintf(_T("AsdkProfileSample ARX Test; Type ProfileSample to execute"));
// register a command with the AutoCAD command mechanism
//
acedRegCmds->addCommand(_T("AsdkProfileSample_COMMANDS"), _T("AsdkProfileSample"), _T("ProfileSample"), ACRX_CMD_MODAL, aFunction);
}
void unloadApp()
{
// Remove the command group added via acedRegCmds->addCommand
//
acedRegCmds->removeGroup(_T("AsdkProfileSample_COMMANDS"));
}
extern "C" AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg, void* appId)
{
switch (msg) {
case AcRx::kInitAppMsg:
acrxDynamicLinker->unlockApplication(appId);
acrxDynamicLinker->registerAppMDIAware(appId);
initApp();
break;
case AcRx::kUnloadAppMsg:
unloadApp();
break;
case AcRx::kLoadDwgMsg:
break;
case AcRx::kUnloadDwgMsg:
break;
case AcRx::kInvkSubrMsg:
break;
default:
;
}
return AcRx::kRetOK;
}
页:
[1]