Распространение 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();
}