Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Создание власних ActiveX елементів

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Элементов управління ActveX — це файл з розширенням ОСХ (наприклад, MyButton. OCX), що ви можете вживати у своїй додатку Visual З++. Visual З++ та інші візуальні мови програмування дають вам можливість включити елемент управління ActiveX до своєї програми і користуватися їм як і, як і стандартним елементом управління Visual З++. Ви поміщаєте елемент управління ActiveX в диалоговую панель, ставите… Читати ще >

Создание власних ActiveX елементів (реферат, курсова, диплом, контрольна)

Создание власних ActiveX элементов

1. Введение.

Элементов управління ActveX — це файл з розширенням ОСХ (наприклад, MyButton. OCX), що ви можете вживати у своїй додатку Visual З++. Visual З++ та інші візуальні мови програмування дають вам можливість включити елемент управління ActiveX до своєї програми і користуватися їм як і, як і стандартним елементом управління Visual З++. Ви поміщаєте елемент управління ActiveX в диалоговую панель, ставите його властивості і пов’язуєте код з його подіями. Коли и створили власний елемент управління ActiveX, ви ожете передавати його іншим програмістам, які можуть опинитися вводити до своєї программы.

Поскольку розширенням файла елемента управління ActiveX є .ОСХ, іноді елементи управління ActiveX називають елементами ОСХ.

В цієї главі ви разработаете свій власний елемент управління ActiveX — MyClock. ОСХ, який виконує завдання виведення поточного часу. Коли програміст поміщає елемент управління MyClock. ОСХ до форми чи в диалоговую панель, MyClock. ОСХ буде безупинно відображати час.

2. Створення проекта

Чтобы створити проект елемента управління MyClock. OCX :

1) Виберіть New в меню File.

В відповідь Visual З++ виведе диалоговую панель New.

2) Виберіть закладку Projects діалогової панелі New.

3) Виберіть MFC ActiveX ControlWizard зі списку типів проектов.

4) Надрукуйте MyClock з вікна Project Name.

5) Клацніть на кнопці, розташовану з боку боку вікна Location, і виберіть каталог для проекта.

6) Клацніть на кнопці ОК.

В відповідь Visual З++ виведе вікно MFC ActiveX ControlWizard Step 1 of 2.

В вікні ActiveX ControlWizard Step 1 залишіть все установки може за умовчанням і клацніть на кнопці Next.

В вікні ActiveX ControlWizard Step 2 залишіть все установки може за умовчанням і клацніть на кнопці Finish.

В відповідь Visual З++ виведе диалоговую панель New Project Information.

Щелкните на кнопці ОК в діалогової панелі New Project Information і виберіть Set Active Configuration в меню Build.

В відповідь Visual З++ виведе диалоговую панель Set Active Project Configuration.

Выберите MyClock — Win32 Release в діалоговому вікні Set Active Project Configuration і клацніть на кнопці ОК.

Это все! Ви завершили створення файла проекту й каркасів файлів елемента управління ActiveX MyClock.ОСХ.

3. Налаштування значка інструмента MyClock.

Значок інструмента MyClock відображає літери ОСХ. Вам потрібно налаштувати елемент управління MyClock в такий спосіб, щоб значок його інструмента був малюнок годин. Для настройки значка інструмента MyClock ви повинні відредагувати растровое зображення IDB_MYCLOCK. Це зображення було створено Visual C++.

Чтобы вивести растровое зображення IDB_MYCLOCK в режимі проектування, зробіть следующее:

1) Виберіть закладку ResourceView з вікна Project Workspace, розкрийте пункт MyClock resources, розкрийте пункт Bitmap і двічі клацніть на пункті IDB_MYCLOCK.

В відповідь Visual З++ виведе растровое зображення IDB_MYCLOCK як проектирования.

2) Використовуючи візуальні інструменти Visual З++, замініть растровое зображення IDB_MYCLOCK літер ОСХ на малюнок найпростіших годин (окружність і ще дві лінії як стрелок).

4. Малювання в елементі управління MyClock

Пока елемент управління MyClock виводить еліпс. Вам потрібно, щоб MyClock відбив час, отже ви повинні написати відповідний код:

Откройте файл MyClockCtl.cpp.

Файл MyClockCtl. cpp — це файл реалізації елемента управління МуСlock, створений вам Visual З++; у тому файлі ви писати свій код для настройки MyClock.

Найдите функцію OnDraw () в файлі MyClockCtl. cpp і напишіть наступний код:

void CMyClockCtrl: OnDraw (CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) {.

// TODO: Replace the following code with your own drawing // code.

// Залити елемент управління обраним кольором. pdc->FillRect (rcBounds, CBrush: FromHandle ((HBRUSH)GetStockObject.

(WHITE_BRUSH))); char CurrentTime[30]; struct tm *newtime; long lTime; // Одержати час time (&lTime); newtime=localtime (&lTime);

// Перетворити час у рядок. strcpy (CurrentTime, asctime (newtime));

// Доповнити рядок одним символом прогалини. CurrentTime[24]= «» ;

// Доповнити рядок ограничивающи символом. CurrentTime[25] = 0;

// Вивести час pdc->ExtTextOut (rcBounds.left, rcBounds. top, ETO_CLIPPED, rcBounds, CurrentTime, strlen (CurrentTime), NULL); }.

5. Висновок поточного часу у безупинному режиме.

Чтобы відображати час безупинно, ви повинні зробити следующее:

1) Написати код, яким установлено таймер з 1000-миллисекундным періодом для елемента управління MyClock.

2) Зв’язати код з подією WM_TIMER елемента управління MyClock.

После установки таймера кожні 1000 мілісекунд (щосекунди) Windows слатиме повідомлення WM_TIMER елементу управління MyClock, у відповідь що буде виконуватися код, що ви зв’яжете з цим подією елемента управління. Цей код буде просто виводити час, так що значення часу буде безупинно обновляться.

Таймер необхідно встановити відразу після створення елемента управління, отже ви повинні зв’язати код, який встановлює таймер, з подією WM_CREATE елемента управления:

Выведите диалоговую панель ClassWizard, обравши ClassWizard в меню View. На сторінці Message Maps виберіть таке событие:

Class Name: CMyClockCtrl.

Object ID: CMyClockCtrl.

Message: WM_CREATE.

Щелкните на кнопці Add Function.

В відповідь Visual З++ додасть до класу CMyClockCtrl функцию-элемент ОпСreate ().

Щелкните на кнопці Edit Code в ClassWizard.

В відповідь Visual З++ відкриє файл MyClockCtrl. cpp з функцією OnCreate () як редактирования.

Напишите наступний код до функцій OnCreate ():

int CMyClockCtrl: OnCreate (LPCREATESTRUCT lpCreateStruct) { if (COleControl:OnCreate (lpCreateStruct) == -1) return -1;

// TODO: Add your specialized creation code here // Встановити таймер. SetTimer (1, 1000, NULL); return 0; }.

Введенный вами код складається з одного оператора, що викликає функцію SetTimer () для установки таймера з 1000-миллисекундным периодом:

SetTiltier (1, 1000, NULL);

Начиная відразу ж, кожні 1000 мілісекунд Windows слатиме елементу управління повідомлення WM_TIMER.

Теперь ви повинні зв’язати код з подією WM_TIMER:

Выберите ClassWizard в меню View. На сторінці Message Maps виберіть таке событие:

Class Name: CMyClockCtrl.

Object ID: CMyClockCtrl.

Message: WM_TIMER.

Щелкните на кнопці Add Function.

В відповідь Visual З++ додасть до класу CMyClockCtrl функцию-элемент OnTimer ().

Щелкните на кнопці Edit Code в ClassWizard.

В відповідь Visual З++ відкриє файл MyClockCtrl. cpp з функцією OnTimer () як редактирования.

Напишите наступний код до функцій OnTimerO:

void CMyClockCtrl: OnTimer (UINT nIDEvent) {.

// TODO: Add your message handler code here and/or call // default // Переключити виклик на функцію OnDraw (). InvalidateControl (); COleControl: OnTimer (nIDEvent); }.

6. Включение базовых свойств в ActiveX MyClock.

Базовые властивості(Stock properties) — преопределены.

Ниже приведён список базових свойств:

Appearance — Зовнішній вид (3-х мірний чи плаский).

BackColor — Колір фона.

BorderStyle — Стиль рамки.

Caption — Заголовок.

Enabled — Стан доступен/недоступен.

Font — Шрифт.

ForeColor — Колір переднього плана.

hWnd — Маркер окна.

ReadyState — Стан готовности.

Text — Текст Для практики ввімкнемо два базових властивості в ActiveX MyClock: BackColor і ForeColor.

Выполните такі действия:

View -> ClassWizard -> Automation (проверте, щоб у вікні Class name встановлено клас CMyClockCtrl).

Нажмите на кнопку Add Property.

Выберите зі списку BackColor і натисніть OK.

Также додайте і вміння ForeColor.

Элемент управління MyClock має нині властивості BackColor і ForeColor, але що використовує значення, які у цих властивості. вам треба написати код у функції OnDraw (), який виконує цю задачу:

void CMyClockCtrl: OnDraw (CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) {.

// TODO: Replace the following code with your own drawing // code.

// Поставити колір переднього плану (колір тексту) pdc->SetTextColor (TranslateColor (GetForeColor ()));

// Встановити режим прозорого фону pdc->SetBkMode (TRANSPARENT);

// Створити пензель з урахуванням значення BackColor CBrush bkBrush (TranslateColor (GetBackColor ()));

// Зафарбувати фон pdc->FillRect (rcBounds,.

&bkBrush); char CurrentTime[30]; struct tm *newtime; long lTime;

// Одержати час time (&lTime); newtime=localtime (&lTime);

// Перетворити час у рядок. strcpy (CurrentTime, asctime (newtime));

// Доповнити рядок одним символом прогалини. CurrentTime[24]= «» ;

// Доповнити рядок ограничивающи символом. CurrentTime[25] = 0;

// Вивести час pdc->ExtTextOut (rcBounds.left, rcBounds. top, ETO_CLIPPED, rcBounds, CurrentTime, strlen (CurrentTime), NULL); }.

Ну ось і, тепер елемент управління MyClock має властивості BackColor і ForeColor.

7. Включення спеціального властивості в ActiveX MyClock

Во часто вам знадобиться включити на свій елемент управління такі властивості, які входить у список стандартних. Ці властивості називаються специальными.

Для прикладу включем в MyClock спеціальне властивість UpdateInterval — період обновления:

View -> ClassWizard -> Automation (проверте, щоб у вікні Class name встановлено клас CMyClockCtrl).

Нажмите на кнопку Add Property.

В вікні External name наберіть UpdateInterval.

В вікні Type виберіть Long.

В вікні Variable name має бути m_updateinterval.

В вікні Notification function поставте OnUpdateIntervalChanged.

Проверте, що у камке Implementation обрано кнопка Member variable і натиснімо OK.

Тем самим ми визначили, що з властивістю UpdateInterval була й змінна m_updateinterval і щоразу, коли значення властивості UpdateInterval буде именяться, автоматично виконане буде функція OnUpdateIntervalChanged.

Теперь треба проинициализировать властивість UpdateInterval:

Откройте файл MyClockCtl.cpp.

Найдите функцію DoPropExchange () і напишиет у ній следующее:

// Ініціалізація властивості UpdateInterval значенням 1000.

PX_Long (pPX, _T («UpdateInterval »), m_updateinterval, 1000);

Теперь треба модернізувати функції OnUpdateIntervalChanged:

// перевірка на отризательность.

if (m_updateinterval < 0).

{.

MessageBox («This property cannot be negative !!! »);

m_updateinterval = 1000;

}.

// Установка таймера.

SetTimer (1, (UINT)m_updateinterval, NULL);

и OnCreate:

// Установка таймера.

SetTimer (1, (UINT)m_updateinterval, NULL);

Ну ось і ActiveX MyClock повністю готовий !!!

Список литературы

Для підготовки даної праці були використані матеріали із сайту internet.

Показати весь текст
Заповнити форму поточною роботою