Presentation laddar. Vänta.

Presentation laddar. Vänta.

Extremely Rough Overview

Liknande presentationer


En presentation över ämnet: "Extremely Rough Overview"— Presentationens avskrift:

1 Extremely Rough Overview
COM Extremely Rough Overview CD5250 Daniel Flemström MDH/IDT

2 Traditional VS COM Apps
COM Application Monolithic Application COM Definierar hur pusselbitarna skall se ut. Resultatet blir språkoberoende pusselbitar(COM) objekt. COM komponent skriven i VB kan användas ifrån C++ ! CD5250 Daniel Flemström MDH/IDT

3 COM Component Object Model IUnknown
IDL – Interface Definition Language Registrera din komponent Ckula = KULA.DLL class Ckula { HRESULT Do(); HRESULT Yl(); ... }; HRESULT Ckula::Do() { } HRESULT Ckula::Yl() { . Win32 Registry Kula.h Kula.cpp cFact.cpp Kula.idl KULA.DLL CD5250 Daniel Flemström MDH/IDT

4 Använda COM WIN32 Registry COM bibliotek
En databas för att mappa klassID mot DLL tex. Innehåller information om ID och namn på klasser och interface. COM bibliotek Slår upp klassid och vet hur man skapar objekt av aktuell klass(oberoende vilket programspråk objektet är skrivet i). CoCreateInstance(klassID) istället för new ATL En samling templates för att underlätta utveckling och användning av COM komponenter. CD5250 Daniel Flemström MDH/IDT

5 IUnknown QueryInterface(IID& iid,void** ppIface); Addref/ Release
Istället För dynamic_cast Interface ID istället för typ Addref/ Release IUnknown Kalle IDraw IKalle IUnknown ... IBoll OlleBoll IBoll ... CD5250 Daniel Flemström MDH/IDT

6 Skapa en instans av ett COM objekt
#include ”BOLL.H” IBoll* pBoll; pBoll = new CBoll(); pBoll->Do(); #import ”C:\blabla\BOLL.DLL” CComPtr<IBoll> pBoll; pBoll.CoCreateInstance(L”myProj.Boll”); HRESULT hr; hr = pBoll->Do(); if(SUCCEEDED(hr)) . . . CComQIPtr<IDraw> pD(pBoll); // Gör QueryInterface hr = pD->Erase(); CD5250 Daniel Flemström MDH/IDT

7 Skapa ett ActiveX Projekt
ATL COM Appwizard CD5250 Daniel Flemström MDH/IDT

8 Vad har hänt KULA.DLL CD5250 Daniel Flemström MDH/IDT

9 ”Skriva” ett COM objekt
Antal Färdiga Skelett Finns: Insert | New ATL Object: CD5250 Daniel Flemström MDH/IDT

10 ATL Object Wizard CD5250 Daniel Flemström MDH/IDT

11 Vad Hände ? CD5250 Daniel Flemström MDH/IDT

12 Vad Hände? CD5250 Daniel Flemström MDH/IDT

13 Vad Hände ? QueryInterface CD5250 Daniel Flemström MDH/IDT

14 Vad Hände ? IDL beskrivning av vår klass
CD5250 Daniel Flemström MDH/IDT

15 Lägga Till Events Högermus | Events CD5250 Daniel Flemström MDH/IDT

16 Event Handler LRESULT OnClickedButton1(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { // TODO : Add Code for control notification handler. return 0; } CD5250 Daniel Flemström MDH/IDT

17 Lägga till Metoder och Properties
Högerklicka på interface symbolen CD5250 Daniel Flemström MDH/IDT

18 ADD Method CD5250 Daniel Flemström MDH/IDT

19 ADD Property CD5250 Daniel Flemström MDH/IDT

20 Vad Hände? CD5250 Daniel Flemström MDH/IDT

21 Använda ATLControls.h Hitta ATLControls.h
#include <ATLControls.h> using namespace ATLControls; .. CListBox list(GetDlgItem(IDC_LIST1)); list.ResetContent(); List.AddString(“Kalle”); CComBSTR m_str; GetDlgItemText(IDC_EDIT1, strDayLeap.m_str); CD5250 Daniel Flemström MDH/IDT

22 Vad mer bör man kunna? CComPtr<> CComQIPtr<> CComVariant
CComBSTR USING_CONVERSION W2CT och så vidare CD5250 Daniel Flemström MDH/IDT


Ladda ner ppt "Extremely Rough Overview"

Liknande presentationer


Google-annonser