Ladda ner presentationen
Presentation laddar. Vänta.
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
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.