Presentation laddar. Vänta.

Presentation laddar. Vänta.

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

Liknande presentationer


En presentation över ämnet: "Sid 1 CD5250 Daniel Flemström MDH/IDT COM Extremely Rough Overview."— Presentationens avskrift:

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

2 Sid 2 CD5250 Daniel Flemström MDH/IDT Traditional VS COM Apps 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++ ! COM Application

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

4 Sid 4 CD5250 Daniel Flemström MDH/IDT Använda COM WIN32 Registry –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.

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

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

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

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

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

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

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

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

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

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

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

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

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

18 Sid 18 CD5250 Daniel Flemström MDH/IDT ADD Method

19 Sid 19 CD5250 Daniel Flemström MDH/IDT ADD Property

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

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

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


Ladda ner ppt "Sid 1 CD5250 Daniel Flemström MDH/IDT COM Extremely Rough Overview."

Liknande presentationer


Google-annonser