ObjectARX, AutoCAD. Среда программирования библиотеки C++

       

Распространение AutoCAD Встроенные Диалоги Позиции табуляции


Мастер Класса Использования или некоторые другие средства, чтобы создать вашу позицию табуляции, подклассифицируемую от CDIALOG. В свойствах для диалога, измените{*замените*} стиль диалога, чтобы “всплыть” и границу к “изменению размеров”. Осуществьте перегрузку для PostNcDestroy (). Замените все возникновения CDIALOG с CACUITABEXTENSION во всех исходных файлах для диалога. В PostNcDestroy () для расширения{*продления*} позиции табуляции удаляют объект позиции табуляции, который был распределен (см. пример ниже).

В вашем AcRx:: kInitAppMsg обработчик в acrxEntryPoint () добавляют запрос к acedRegisterExtendedTab ("MYAPPNAME.ARX", "DIALOGNAME"), где MYAPPNAME - основное имя файла вашего приложения, и DIALOGNAME - изданное имя расширяемого табулированного диалога, к которому Вы желаете добавить.

Осуществьте AcRx:: kInitDialogMsg обработчик в acrxEntryPoint () и добавьте позицию табуляции там. (Пусто *) appId параметр к acrxEntryPoint () - указатель CAcUiTabExtensionManager. Используйте функцию GetDialogName члена () для CACUITABEXTENSIONMANAGER, чтобы получить имя инициализируемого диалога и, если приложение хочет добавить к этому диалогу, назовите AddTab () функцией члена CACUITABEXTENSIONMANAGER, чтобы добавить позицию табуляции. Один параметр к этой функции - указатель на предварительно распределенный объект CAcUiTabExtension. Если диалог изменяемого размера, и Вы хотите некоторых из вашего средства управления, чтобы изменять размеры, добавить что изменение размеров кода после запроса к AddTab ().

Например

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::kInitDialogMsg:

// A dialog is initializing that we are interested in adding

// tabs to.

addMyTabs((CAcUiTabExtensionManager*)pkt);


break;

default:

break;

}

return AcRx::kRetOK;

}

void initApp()

{

InitMFC();

// Do other initialization tasks here.

acedRegCmds->addCommand(

"MYARXAPP",

"MYARXAPP",

"MYARXAPP",

ACRX_CMD_MODAL,

&MyArxAppCreate);

// Here is where we register the fact that we want to add

// a tab to the PREFERENCES dialog.

acedRegisterExtendedTab("MYARXAPP.ARX", "PREFERENCES");

}

// CMyTab1 is subclassed from CAcUiTabExtension.

static CMyTab1* pTab1;

void addMyTabs(CAcUiTabExtensionManager* pXtabManager)

{

// Allocate an extended tab if it has not been done already

// and add it through the CAcUiTabExtensionManager.

pTab1 = new CMyTab1;

pXtabManager->AddTab(_hdllInstance, IDD_TAB1,

"My Tab1", pTab1);

// If the main dialog is resizable, add your control

// resizing directives here.

pTab1->StretchControlXY(IDC_EDIT1, 100, 100);

}

Тогда для CMYTAB1 выполнения класса:

void CMyTab1::PostNcDestroy()

// Override to delete added tab.

{

delete pTab1;

pTab1 = NULL;

CAcUiTabExtension::PostNcDestroy();

}


Содержание раздела