Использование и распространение Системы Диалога Позиции табуляции AdUi

Все табулированные диалоги, которые используют CADUITABMAINDIALOG и CADUITABCHILDDIALOG, могут быть легко сделаны расширяемой позицией табуляции. Не имеется никакого предела для числа позиций табуляции, которые могут быть добавлены к расширяемому по позиции табуляции диалогу. Если основной диалог изменяемого размера, добавленные позиции табуляции могут участвовать в этом, изменяя размеры использования тех же самых директив, выделенных в документации по диалогам изменяемого размера. Все диалоги в использовании AutoCAD, листающем позиции табуляции в противоположность помещенным в стек позициям табуляции.

Это важно для Вас, чтобы установить грязный бит для расширенной{*продленной*} позиции табуляции, используя SetDirty () функция члена CADUITABCHILDDIALOG, когда данные должны быть инициализированы или модифицирован через DoDataExchange.

Построение заказного диалога с табуляторами, расширяемого

Создайте ваш табулированный диалог, используя CAcUiTabMainDialog для основной структуры{*рамки*} диалога и CACUITABCHILDDIALOG для каждой позиции табуляции. В OnInitDialog () или конструкторе CACUITABMAINDIALOG немедленно вызывают SetDialogName () с изданным именем вашего расширяемого диалога. ObjectARX-приложения будут использовать это имя, чтобы добавить позиции табуляции к вашему диалогу. После того, как Вы добавляете, что ваши позиции табуляции с звонят к AddTab (), в OnInitDialog, вызывать AddExtendedTabs (). Помните, что ваш табулированный диалог может иметь любое число добавленных позиций табуляции в этом, так что не примите установленное число позиций табуляции в другом месте в коде диалога.

НЕ нашли? Не то? Что вы ищете?

Например

BOOL CPrefTabFrame:: OnInitDialog ()

// Инициализация Диалога для моей табулированной структуры{*рамки*} диалога.

{

SetDialogName ("Предпочтение");

CAcUiTabMainDialog:: OnInitDialog ();

...

// Добавить мои позиции табуляции здесь.

m_tab. AddTab(0,IDS_FILES_TABNAME, IDD_FILES_TAB,&m_filesTab);

m_tab. AddTab(1,IDS_PERF_TABNAME, IDD_PERF_TAB,&m_performTab);

m_tab. AddTab(2,IDS_COMP_TABNAME, IDD_COMP_TAB,&m_compatTab);

// Добавить любые расширенные{*продленные*} позиции табуляции. Этот запрос состоит в том то, что делает это

// Расширяемая позиция табуляции диалога

AddExtendedTabs ();

}

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

}

Использование AdUi и AcUi с VC ++ AppWizard

Теперь, когда Вы видели краткий обзор для AdUi и AcUi поддержки диалога, мы представим пример использования этих систем. Диалог, который мы создадим, будет появляться следующим образом. Исходный текст для этого примера может быть найден в ObjectARX SDK docsamps\AsdkAcUiSample каталогом. Этот пример, однако, опишет, как установить ваш проект с начала.

Создайте ObjectARX MFC Прикладной Скелет

1 Создают новый проект в Microsoft Visual C++, используя Прикладного Мастера. Выберите MFC AppWizard (dll) проектный{*строительный*} тип. Назначите проект имя (для этой выборки, мы будем использовать имя AsdkAcUiSample) и каталог и нажимать OK. На следующем экране, выберите Расширение{*продление*} MFC DLL, затем нажмите Finish. Мы теперь имеем основное MFC Расширение{*продление*} DLL проект.

2 Мы теперь добавим необходимый код, чтобы поддержать ObjectARX. Откройте AsdkAcUiSample. cpp файл. Удалите запрос AFX_EXTENSION_MODULE и также функция DllMain.

3 Добавляют следующее объявление:

AC_IMPLEMENT_EXTENSION_MODULE(theArxDLL);

4 Добавляют следующий код, чтобы установить команду AutoCAD и acrxEntryPoint:

void dialogCreate()

{

acutPrintf("\nAcUi Dialog Sample");

}

Следующий запрос addCommand использует образец ресурса модуля от

AC_IMPLEMENT_EXTENSION_MODULE макрокоманда:

static void initApp()

{

theArxDLL. AttachInstance();

CAcModuleResourceOverride resOverride;

acedRegCmds->addCommand(

"ASDK_ACUI_SAMPLE",

"ASDKACUISAMPLE",

"ACUISAMPLE",

ACRX_CMD_MODAL,

dialogCreate,

NULL,

-1,

theArxDLL. ModuleResourceInstance());

}

Следующий unloadApp () функция вызвана, когда приложение разгружается.

В это время важно отделить образец ресурса:

static void unloadApp()

{

// Do other cleanup tasks here

acedRegCmds->removeGroup("ASDK_ACUI_SAMPLE");

theArxDLL. DetachInstance();

}

// Entry point

//

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:

break;

default:

break;

}

return AcRx::kRetOK;

}

Создайте AsdkAcUiSample. h файл заголовка, и добавьте следующие линии к file:

#include "resource. h" // main symbols

#define PI 3.14159265359

// Forward declaration for the entry point function of

// our application

void testCreate();

Тогда добавьте следующие файлы для включения к AsdkAcUiSample. cpp:

#include "AsdkAcUiSample. h"

#include "AcExtensionModule. h"

Вы будете также должны добавить ObjectARX библиотеки к проектному файлу, заменять .dll расширение к. arx, и изменять. def файл надлежащим экспортом. Тогда Вы должны быть способны компилировать и загрузить приложение.

Создание MFC-диалога, используя Visual Studio

1 В Visual C++ добавляют ресурс диалога.

2 Создают следующее диалоговое окно, используя средство управления Студии Приложения:

3 Удостоверятся ресурс, ИДЕНТИФИКАТОРЫ соответствуют{*согласовывают*} этой диаграмме, или остающийся код не будет работать.

Создание классов и средств управления

1 Использование ClassWizard, создайте диалоговый класс. Если Вы запускаете ClassWizard с экрана создания диалога, это запросит Вас создавать новый класс. Нажмите OK для нового класса, и затем дайте диалогу имя. Для этого примера используют AsdkAcUiDialogSample.

2 Выключатель к позиции табуляции member variable.

3 Для IDC_BUTTON_ANGLE и IDC_BUTTON_POINT ресурсов добавляют, что средство управления CBUTTON вызвало m_ctrlAngleButton и m_ctrlPickButton, соответственно.

4 Для IDC_EDIT_ANGLE, IDC_EDIT_XPT, IDC_EDIT_YPT, и IDC_EDIT_ZPT ресурсов добавляют, что средство управления CEDIT вызвало m_ctrlAngleEdit, m_ctrlXPtEdit, m_ctrlYPtEdit, и m_ctrlZPtEdit, соответственно.

5 Для IDC_LIST_BLOCKS ресурса добавляют, что управление CLISTBOX вызвало m_ctrlBlockList.

6 Для IDC_COMBO_REGAPPS ресурса добавляют, что управление CCOMBOBOX вызвало m_ctrlRegAppComboBox.

7 Теперь открывают AsdkAcUiDialogSample. h файл заголовка и заменяют образование из нового диалогового класса. Это должно быть получено из CACUIDIALOG:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132