Разработка ActiveX компонента, выполняющего сортировку методом Шелла

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

Лабораторная работа №4

ActiveX компоненты

Цель: Разработать ActiveX компонент, выполняющий сортировку методом шелла.

Задача: исследовать работу ActiveX компонент в MS Word

Описание

ActiveX - это 32 разрядные элементы, которые базируются на технологии COM, и которые поддерживают интерфейс элементов управления. Этот интерфейс может предоставлять:

Ø  Свойства (properties)

Ø  Методы (methods)

Ø  События(event)

Технология ActiveX реализует взаимодействие различных приложений друг с другом.[1]

Ход работы

1.  Установили и запустили Microsoft Visual C++ 6.0

2.  Ознакомились с существующими вариантами проектов. Выбрали MFC ActiveX ControlWizard

3.  Написали код нашего элемента ActiveX, позволяющего хранить в себе строку, и содержащего функцию сортировки методом вставок.

4.  Открыли Microsoft Word, запустили редактор VBA

5.  При помощи средств VBA создали форму, в которую внедрили наш ActiveX

6.  Добавили возможности управления ActiveX через средства VBA: менять содержимое ActiveX, сортировать строку.

7.  Добавили возможности вставки содержимого ActiveX в MS Office приложение: в Word.

Код программы на VBA

Пример формы на VBA и исходный текст макроса для Worda:


Пример работы макроса:

Вывод: в ходе лабораторной работе был написан ActiveX компонент реализующий сортировку методом шелла, для MS Word написан макрос, реализующий доступ к ActiveX компоненту, который при помощи метода ShellSort через ActiveX компонент, сортирует исходную строчку и вставляет ее в новый документ Worda.


Приложение

Фрагменты кода элемента ActiveX написанного при помощи средств Microsoft Visual C++ 6.0

// CMyelemetCtrl::CMyelemetCtrl - Constructor

CMyelemetCtrl::CMyelemetCtrl()

{

InitializeIIDs(&IID_DMyelemet, &IID_DMyelemetEvents);

m_myLongString = "My ActiveX 2";

}

// CMyelemetCtrl::DoPropExchange - Persistence support

void CMyelemetCtrl::DoPropExchange(CPropExchange* pPX)

{

ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));

COleControl::DoPropExchange(pPX);

PX_String(pPX,"MyLongString",m_myLongString);

}

// CMyelemetCtrl message handlers

void CMyelemetCtrl::ShellSort()

{

tblIndex n, h, ub, lb;

T t;

char a[255];

CString Temp1;

ub = strlen(m_myLongString)-1;

lb = 0;

for (int j=0; j <= ub; j++)

a[j] = m_myLongString[j];

/* compute largest increment */

n = ub - lb +1;

h = 1;

if (n < 14)

h = 1;

else if (sizeof(tblIndex) == 2 && n > 29524)

h = 3280;

else {

while (h < n) h = 3*h + 1;

h /= 3;

h /= 3;

}

while (h > 0) {

/* sort-by-insertion in increments of h */

for (int i = lb + h; i <= ub; i++) {

t = a[i];

for (int j = i-h; j >= lb && compGT(a[j], t); j -= h) a[j+h] = a[j];

a[j+h] = t;

}

/* compute next increment */

h /= 3;

}

m_myLongString = "";

for (j=0; j <= ub; j++)

m_myLongString = m_myLongString + a[j];

}



[1] Fiststep mach-2003

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
169 Kb
Скачали:
0

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.