ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Створення власних ActiveX елементів
         

     

    Інформатика, програмування

    Створення власних ActiveX елементів

    1. Введення

    Елементів управління ActveX - це файл з розширенням ОСГ (наприклад, MyButton.OCX), який ви можете використовувати у своєму додатку Visual C + +. Visual C + + та інші візуальні мови програмування дають вам можливість включити елемент керування ActiveX у свою програму і користуватися їм так само, як і стандартним елементом управління Visual C + +. Ви ставите елемент керування ActiveX у діалогову панель, ставите його властивості та пов'язуєте код з його подіями. Після того як и створили власний елемент управління ActiveX, ви ожете передавати його іншим програмістам, які можуть вводити його в свої програми.

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

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

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

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

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

    У відповідь Visual C + + виведе діалогову панель New.

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

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

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

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

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

    У відповідь Visual C + + виведе вікно MFC ActiveX ControlWizard Step 1 of 2

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

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

    У відповідь Visual C + + виведе діалогову панель New Project Information.

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

    У відповідь Visual C + + виведе діалогову панель 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 C + + виведе растрове зображення IDB_MYCLOCK в режимі проектування.

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

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

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

    Відкрийте файл MyClockCtl.cpp.

    Файл MyClockCtl.cpp - це файл реалізації елемента управління МуСlock, створений для вас Visual C + +; в цьому файлі ви будете писати свій код для налаштування 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 C + + додасть в клас CMyClockCtrl функцію-елемент ОпСreate ().

    Клацніть на кнопці Edit Code в ClassWizard.

    У відповідь Visual C + + відкриє файл 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 C + + додасть в клас CMyClockCtrl функцію-елемент OnTimer ().

    Клацніть на кнопці Edit Code в ClassWizard.

    У відповідь Visual C + + відкриє файл 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. Включення базових властивостей < b> у 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 повністю готовий !!!

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

    Для підготовки даної роботи були використані матеріали з сайту http://www.realcoding.net/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status