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

     

     

     

     

     

         
     
    Створення додатків OLE 2
         

     

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

    Створення додатків OLE 2

    У цьому розділі ви створите два нові програми OLE. Перше - проста програма-сервер OLE, другий - приклад простого контейнера OLE. Ці програми призначені для демонстрації мінімальних витрат програмування, необхідних для створення додатків OLE 2.

    У будь-якому разі, для створення оболонки програми слід скористатися додатком AppExpert. Спочатку необхідно згенерувати основу програми в AppExpert, потім модифіковані створені файли створення закінченого робочого прикладу.

    При написанні своїх версій цих програм необхідно мати на увазі кілька моментів. По-перше, у цьому розділі наводяться листинги тільки вихідних, немодифікованих файлів.

    По-друге, CLSID цих програм буде відрізнятися від CLSID програм, які ви сгенеріруете за допомогою AppExpert. Це нормально і навіть необхідно, оскільки за допомогою CLSID одні серверні додатки в Windows відрізняються від інших.

    По-третє, ці приклади містять мінімум необхідних коштів для того, щоб почати програмувати з OLE. Ви можете використовувати ці приклади в якості початкового коду для створення свого дійсно корисного сервера або контейнера. У цій главі просто не вистачає місця для опису реалізації функціональних сервера і контейнера - у цьому випадку вам знадобився б вантажопідйомники, щоб покласти цю книгу на стіл.

    Створення сервера OLE

    Перший додаток OLE в цій главі - сервер. У цьому прикладі ви збудуєте повний сервер - сервер, який може використовуватися і як автономне застосування, і як сервер. Створюючи автономний сервер (тобто у вигляді виконуваної програми. ЕХЕ, а не у вигляді динамічно підключається бібліотеки DLL), ви спрощуєте процес реєстрації сервера в Windows.

    Початковий процес розробки сервера простий. Спочатку з інтегрованого середовища Borland C + + версії 4.5 запустіть AppExpert. Задайте каталог та ім'я вашого проекту. Я помістив свій проект в каталог BC45SOURCEOLESVR. Проект я назвав OLESVR (я завжди називаю проекти і каталоги проектів одним і тим же ім'ям, це полегшує запам'ятовування). Нижче наводиться послідовність дій, в результаті яких було створено проект OLESVR.

    Запустіть AppExpert. У першому діалоговому вікні слід задати ім'я і каталог проекту. Як уже зазначалося, я використав OLESVR для завдання обох.

    Після вибору ОК у діалоговому вікні імені і каталога проекту наступний розділ АррЕхреrt - діалогове вікно Application General Options (основні параметри програми). Це діалогове вікно дозволяє задати конфігурацію програми, що генерується AppExpert. Вам доведеться модифіковані кілька опцій для проекту OLESVR.

    Перша опція, яку потрібно змінити, знаходиться в блоці Application: Summary. Замініть параметр за замовчуванням Multiple document interface на Single document interface. Ця зміна узгоджується з закликом Microsoft робити ставку на однодокументние програми для Windows. На рис. 21.1 демонструється модифікований блок Application: Summary.

    Друга зміна, яку необхідно внести, - вказати AppExpert, що ваша програма буде сервером OLE. Ця зміна вноситься до пункт Application: OLE 2 Options, що має ряд опцій OLE 2, які можна задавати. Оскільки ви створюєте сервер OLE, ви будете оперувати тільки елементами блоку групи OLE 2 Server: (пошукайте його у верхньому правому куті діалогу). Виберіть кнопку осередку позначки Server EXE. На рис. 21.2 демонструються зміни, проведені в пункті Application: OLE 2 Options.

    При бажанні ви можете заповнити елементи пункту Application: Admin Options блоку діалогу AppExpert. З його допомогою ви можете задати в додатку замітку про авторське право, ім'я та інформацію про версію. Всі елементи в Application: Admin Options необов'язкові, і ви можете їх не задавати.

    Підпункти пункту Main Window не потребують модифікаціях, їх слід залишити заданими значеннями за замовчуванням. Для даного застосування немає необхідності змінювати будь-що в цих підпунктах. Пункт MDI Child/View непридатний для цього проекту, тому немає потреби в ньому що-небудь змінювати.

    Після завдання всіх необхідних модифікацій слід вибрати кнопку Generate в нижній частині блоку діалогу AppExpert Application General Options. AppExpert запросить у вас підтвердження, чи дійсно ви збираєтеся створити проект; після прийняття підтвердження AppExpert згенерує додаток. На рис. 21.3 наводиться кінцевий проект, завантажений в інтегроване середовище Borland C + + версії 4.5.

    Рис. 21.3. Проект OLESVR завантажений в інтегровану середу Borland C + + версії 4.5

    Тепер, коли програма сгенерирована, в неї треба додати код, що задає функціональність сервера OLE. Необхідно включити код, малює зображення, а також провести інші незначні зміни.

    На щастя, крім Borland C + + версії 4.5 можна скористатися програмою ClassExpert, що полегшить внесення більшої частини змін. Припустимо, ви хочете спершу зайнятися питаннями відображення. Як і в будь-якій створеної за допомогою AppExpert програмі, основна частина малювання виконується класом відображення, похідним від класу OWL TOleView. Файл, в якому міститься реалізація відображення, має ім'я LSVROLVW.CPP. У лістингу 21.1 наводиться початковий файл OSROLVW.CPP.        

    Лістинг 21.1 (файл реалізації класу   відображення OLESVR, OSVROLVW.CPP)   

    /* проект olesvr   

    Авторське право _ 1994   

    підсистеми: Програма olesvr.exe   

    ФАЙЛ: svrolvw.cpp   

    Файл реалізації olesvrOleView   (TOleView)   

    */   

    # include      

    # pragma   hdrstop   

    # include   "olsvrapp.h"   

    # include   "Isvrolvw. H"   

    # include      

    // Реалізація olesvrOleView   

    // Створити таблицю для всіх   повідомлень/команд, які підтримуються olsvrOleView,   

    // похідним від TOleView   

    DEFINE_RESPONSE_TABLE1   (olesvrOleView, TOleView)   

    //   olesvr0leViewRSP_TBL_BEGIN   

    EV_WM_GETMINMAXINFO,   

    EV_OC_VIEWSHOWTOOLS,   

    //   olesvr0leViewRSP_TBL_END   

    END_RESPONSE_TABLE;   

    /////////////////////////////////////////////// ////////////////      

    //   olesvrOleView   

    // Обробка створення/знищення   

    olesvrOleView:: olesvrOleView   (TDocument & doc, TWindow * parent)   

    : TOleView (doc, parent)   

    (   

    ToolBar = 0;   

    // вставити>> В цьому місці код   вашого конструктора   

    )   

    olesvrOleView:: ~ olesvrOleView ()   

    (   

    // вставити>> В цьому місці код   вашого деструктора   

    )   

    //   

    // Процедура малювання для Window,   Printer і PrintPreview клієнта TOleView   

    //   

    void   olesvrOleView:: Paint (TDC & dc, bool erase, TRect & rect)   

    (   

    olesvrApp   * theApp = TYPESAFE_DOWNCAST (GetApplication (), olesvrApp);   

    if (theАрр) (   

    // малювати тільки у випадку, якщо   необхідно що-небудь надрукувати або відобразити,   

    // інакше не робити ніяких   дій   

    if (theApp-> Printing & &   theApp-> Printer & &! rect.IsEmpty ()) (   

    // використати pageSize для отримання   розміру вікна для візуалізації інформації   

    // для Window - це робоча область,   

    // для принтера - це розміри контексту   пристрої та   

    // для print preview - це вікно формату   

    TSize pageSize (rect. right - rect. left,   rect. bottom - rect. top);   

    TPrintDialog:: TData & printerData =   theApp-> Printer-> GetSetup ();   

    // вирахувати число сторінок, які   необхідно надрукувати   

    printerData.MinPage = 1;   

    printerData.MaxPage = 1;   

    TOcView * ocView = GetOcView ();   

    // Малювання TOcPart за замовчуванням   

    TRect CLientRect = GetClientRect ();   

    TRect logicalRect = clientRect +   (TSize &) ocView-> GetOrigin ();   

    for (TOcPartCollectionlter   i (GetOcDoc () -> GetParts ()); i; i + +) (   

    TOcPart & p = * i.Current ();   

    if (p.IsVisible (logicalRect)) (   

    TRect r = p.GetRect ();   

    r -= ocView-> GetOrigin ();   

    p.Draw (dc,   r, clientRect);// Намалювати впроваджений об'єкт   

      if (p.IsSelected ()) (   

    TUIHandle handle (r,   TUIHandle:: HandlesIn | TUIHandle:: Grapples |   

      TUIHandle:: HatchBorder, 5);   

    handle. Paint (dc);   

    ) else (   

    TUIHandle handle (r,   TUIHandle:: HatchBorder, 5);   

    handle.   Paint (dc);   

      )   

      )   

    )      

    // вставити>> В цьому місці   виконується друк   

    TOleView:: Paint (dc, erase,   rect);   

    ) else (   

    // вставити>> В цьому місці   виконується звичайне малювання   

    )   

    dc.TextOut (0,   30, "olesvr OLE Server");   

    )   

    )   

    void   olesvrOleView:: EvGetMinMaxInfo (MINMAXINFO far & minmaxinfo)   

    (   

    olesvrApp   * theApp = TYPESAFE_DOWNCAST (GetApplication (), olesvrApp);   

    if   (theApp) (   

    if (theApp-> Printing) (   

    minmaxinfo.ptMaxSize = TPoint (32000,   32000);   

    minmaxinfo.ptMaxTrackSize = TPoint (32000,   32000);   

    return;   

    )   

    )   

    TOleView:: EvGetMinMaxInfo (minmaxinfo);   

    )   

    bool   olesvrOleView:: EvOcViewShowTools (TOcToolBarlnfo far & tbi)   

    (   

    // Сконструювати і створити панель   управління для відображення, знищити   

    // нашу панель для приховування   

    if   (tbi.Show) (   

    if (! ToolBar) (   

    ToolBar = new TControlBar (this);   

    olesvrApp * theApp =   TYPESAFE_DOWNCAST (GetApplication (), olesvrApp);   

    CHECK (theApp);   

    theApp-> CreateGadgets (ToolBar, true);   

    )   

    ToolBar-> Create ();   

    tbi.HTopTB = (HWND) * ToolBar;   

    )   else (   

    if (ToolBar) (   

    ToolBar-> Destroy ();   

    delete ToolBar;   

    ToolBar = 0;   

    )   

    )   

    return   true;   

    )     

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

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

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

     

     

     

     

     

     

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