1.1. Kontrolki ActiveX. Kontrolki ActiveX. Technologia ActiveX. Technologia ActiveX. Technologia ActiveX. Technologia ActiveX.

Wielkość: px
Rozpocząć pokaz od strony:

Download "1.1. Kontrolki ActiveX. Kontrolki ActiveX. Technologia ActiveX. Technologia ActiveX. Technologia ActiveX. Technologia ActiveX."

Transkrypt

1 1 Katedra Optoelektroniki i Systemów Elektronicznych 2 Kontrolki Oprogramowanie Systemów Elektronicznych Zagadnienia: Temat wykładu Kontrolki 1. Technologia Rejestrowanie kontrolek 4. Projektowanie kontrolki w Visual Studio C++ 5. Wykorzystanie kontrolek 3 Technologia 4 Technologia DDE OLE COM Interfejs zbiór logicznie powiązanych właściwości, metod i zdarzeń obejmujących określoną funkcjonalność (wygląd obiektu, współdziałanie z otaczającą aplikacją, wywoływanie zdarzeń). VBX OCX OLE (Object Linking and Embedding) osadzanie i łączenie obiektów. Technologia pozwalająca na umieszczanie jednego obiektu wewnątrz drugiego i prezentowania go w takiej formie, jak czyni to aplikacja macierzysta. COM (Component Object Model) model programowania zorientowanego obiektowo, udostępniającego programiście technologię OLE. VBX (Visual Basic Controls) kontrolki wizualne utworzone za pomocą Visual Basic (16-bitowe). OCX (OLE Control Extension) kontrolki wizualne przeniesione na platformę 32- bitową, wykorzystujące technologię OLE. promowana przez Microsoft technologia pozwalająca na stosowanie obiektów OLE wewnątrz innych dokumentów w sposób niezależny od systemu operacyjnego. Technologia COM określa, w jaki sposób aplikacje i pojedyncze komponenty mogą współpracować poprzez użycie interfejsów. Technologia definiuje z kolei płaszczyznę zbudowaną na szczycie modelu COM, określając jakiego typu interfejsy powinny wspierać różne obiekty, a także jak różne obiekty powinny ze sobą współpracować. 5 Technologia 6 Technologia Jedną z kluczowych technologii występujących w obiektach jest automatyzacja. Automatyzacja pozwala aplikacji, będącej serwerem (ang. server), na osadzanie się wewnątrz innej aplikacji stanowiącej kontener (ang. container), aktywowanie się i kontrolowanie należącej do niej części interfejsu użytkownika lub dokumentu. Kiedy użytkownik wykona niezbędne zmiany i przejdzie do innej części programu nie kontrolowanej przez aplikację osadzoną, ta samoczynnie kończy swoją pracę. Przykłady: - Edycja równania MS Equation lub arkusza MS Excel w dokumencie MS Word. -Przeglądanie plików pdf w przeglądarce internetowej. - Wykorzystanie komponentów graficznych CVI w aplikacjach Visual C++ Każdy obiekt, który może mieć osadzone w sobie inne obiekty, jest kontenerem. Zatem jedna aplikacja może być równocześnie kontenerem oraz serwerem. Kontener 3 Serwer 4 Kontener 1 Serwer 5 Kontener 2 Serwer 1 Serwer 2 Serwer 3 Kontrolka jest szczególnym przykładem serwera, który nie jest aplikacją i nie jest w stanie funkcjonować samodzielnie. Może być jednak osadzony w innej aplikacji, czyniąc ją automatycznie kontenerem. 1.1

2 7 Technologia 8 Technologia Każdy obiekt posiada właściwości, które określają jego wygląd oraz sposób interakcji z otoczeniem (kontenerem). Podstawowe grupy właściwości: Ambient zawierają informacje dotyczące parametrów kontenera związanych z jego wyglądem. Są one udostępniane kontrolce w celu umożliwienia dopasowania jej wyglądu do wyglądu kontenera. Kontrolka nie może zmieniać wartości tych właściwości. Przykładowe właściwości należące do tej grupy to BackColor, ForeColor, Font, ScaleUnits (nazwa jednostki odległości używanej przez kontener). Control właściwości ustawiane przez kontrolkę podczas jej osadzania w kontenerze. Zawierają podstawowe parametry związane z typem pracy i wyglądem, np. Enabled, Hwnd (uchwyt do okna kontrolki), Caption, Appearnace (FALSE dla kontrolki 2-D, TRUE dla kontrolki 3-D). Kontrolka utworzona w oparciu o bibliotekę MFC zawiera 9 podstawowych właściwości typu Control. Są to tzw. Stock Properties. Dodając funkcjonalność kontrolki programista określa natomiast nowe właściwości, czyli tzw. Custom Properties. Extended - dodatkowe właściwości ustawiane przez kontener np. Visible, Parent. Obiekt posiada metody, które pozwalają na sterowanie jego pracą z poziomu kontenera. Metody te definiowane są przez programistę. W MFC oprócz tego definiowane są dwie metody tzw. Stock Methods: Refresh() ( odświeżenie wyglądu kontrolki) oraz DoClick() (symulacja naciśnięcia klawiszem myszy na kontrolkę). Obie metody są metodami klasy ColeControl. Obiekt generuje zdarzenie (Event) w sytuacji, gdy odbierze określony komunikat kierowany do niej przez system lub gdy użytkownik wykona na obiekcie określoną operację. Zdarzenia generowane przez obiekt są przekazywane do kontenera, którego zadaniem jest ich obsługa. Typowe zdarzenia związane są z komunikatami generowanymi przez urządzenia peryferyjne (klawiatura, mysz). W MFC są to Click, DblClick, KeyDown, KeyPress, MouseDown, MouseMove. Programista może oczywiście dodawać nowe zdarzenia, które są generowane przez kontrolkę w różnych sytuacjach, np. kontrola zakresu wartości liczbowych, współpraca z inną kontrolką lub aplikacją, monitorowanie zdarzeń interfejsu szeregowego. 9 Kontrolki 10 Zagadnienia: 1. Technologia Rejestrowanie kontrolek 4. Projektowanie kontrolki w Visual Studio C++ 5. Wykorzystanie kontrolek Interfejs IUnknown jest wymagany w każdym obiekcie i służy do ustalenia jakie inne interfejsy są przez obiekt wspierane. Interfejs IUnknown udostępnia trzy podstawowe metody: QueryInterface zwrócenie tablicy wskaźników do wspieranych interfejsów. AddRef, Release Zwiększenie/zmniejszenie licznika odwołań do interfejsu. Jeżeli licznik odwołań zmniejszy się do zera interfejs jest usuwany z pamięci. Metody stosowane w celach diagnostycznych. Ponadto obiekty AvtiveX powinny posiadać zdolność do samorejestrowania się Rodzaje interfejsów: Kontener IOleInPlaceFrame IOleInPlaceUIWindow IOleInPlaceSite IOleClientSaite IAdviseSink IOleControlSite IDispatch (properties) IPropertyNotifySink IDispatch (events) Cztery obszary funkcjonalności: GUI Metody Zdarzenia Właściwości Serwer (kontrolka) IOleInPlaceActiveObject IOleInPlaceObject IOleObject IRunnableObject IDataObject IViewObject2 IOleCache2 IPersistStorage IPersistStreamInit ISpecifyPropertyPages IConnectionPointContainer IConnectionPoint IProvideClassInfo2 IDispatch (methods) IOleControl Wzajemne oddziaływanie między serwerem a kontenerem odbywa się głównie przez trzy interfejsy IDispatch. Jeden z tych interfejsów należy do kontrolki, pozostałe do kontenera. Kontener zdarzenia właściwości Serwer (kontrolka) metody 1.2

3 13 14 Podstawowym elementem umożliwiającym automatyzację jest interfejs IDispatch (dispinterface). Został utworzony, aby umożliwić nie obiektowym językom programowania (np. Visual Basic) odwoływanie się do obiektów COM. Interfejs IDispatch udostępnia cztery podstawowe metody: 1. GetTypeInfoCount służy do sprawdzania, ile typów zostało zadeklarowanych w bibliotece typów danego obiektu COM; 2. GetTypeInfo zwraca informacje, z których możemy dowiedzieć się, ile metod oferuje konkretny obiekt, jakie są ich nazwy i parametry ich wywołań; czasami zawiera opisy metod; 3. GetIDsOfNames zwraca uchwyt (wskaźnik) do metody, której nazwa została przekazana jako parametr wywołania funkcji; 4. Invoke powoduje wykonanie metody, odczyt lub zmianę wartości właściwości o identyfikatorze pobranym przez funkcję GetIDsOfNames. Interfejs IDispatch zawiera wskaźnik do tablicy aktywnych metod, które mogą być uruchamiane wewnątrz kontrolki lub osadzonej aplikacji. Każda metoda posiada identyfikator DISPID. Uruchomienie metody osadzonego obiektu odbywa się przez wywołanie funkcji Invoke z parametrem DISPID, identyfikującym metodę. Idispatch::Invoke(DISPID) Klient Tablica inentyfikatorów interfejsu IDispatch Obiekt Invoke() { switch (DISPID) { case 1: MetodaX(); case 2: MetodaY(); case 3: MetodaZ(); HRESULT Invoke( DISPID dispidmember, REFIID riid, LCID lcid, WORD wflags, DISPPARAMS FAR* pdispparams, VARIANT FAR* pvarresult, EXCEPINFO FAR* pexcepinfo, unsigned int FAR* puargerr); Parametry funkcji Invoke: DISPID dispidmember - identyfikator (metody, właściwości) REFIID riid - IID_NULL LCID lcid - identyfikator narodowościowy, wykorzystywany przez funkcję GetIDsOfNames WORD wflags - przyczyna wywołania funkcji: DISPATCH_METHOD wywołanie metody DISPATCH_PROPERTYGET pobranie wartości właściwości DISPATCH_PROPERTYPUT ustawienie wartości właściwości DISPATCH_PROPERTYPUTREF - ustawienie wartości właściwości poprzez zmienną referencyjną Parametry funkcji Invoke cd.: DISPPARAMS FAR* pdispparams - wskaźnik do struktury DISPPARAMS, przez którą przekazywane są parametry VARIANT FAR* pvarresult - wskaźnik do obszaru pamięci gdzie ma zostać zapisany rezultat wykonania funkcji. Jeśli funkcja nic nie zwraca to NULL. Parametr jest ignorowany jeśli ustawiane są wartości właściwości. EXCEPINFO FAR* pexcepinfo - Wskaźnik do struktury zawierającej informacje o błędzie. Może być NULL. unsigned int FAR* puargerr pierwszy element w tablicy parametrów funkcji dla którego wystąpił błąd. Parametr jest aktualizowany jeśli funkcja Invoke zwróci DISP_E_TYPEMISMATCH lub DISP_E_PARAMNOTFOUND Przykładowe wartość zwracana przez funkcję Invoke: Parametry dla metody lub właściwości są przekazywane przez strukturę DISPPARAMS Return value S_OK DISP_E_BADPARAMCOUNT DISP_E_BADVARTYPE DISP_E_EXCEPTION DISP_E_MEMBERNOTFOUND DISP_E_NONAMEDARGS DISP_E_PARAMNOTFOUND Meaning OK Niewłaściwa liczba parametrów Niewłaściwy typ parametru Wystąpił wyjątek Właściwość nie istnieje, lub jest tylko do odczytu Implementacja interfejsu IDispatch nie zezwala na stosowanie nazw parametrów Nie znaleziono parametru typedef struct FARSTRUCT tagdispparams{ VARIANTARG FAR* rgvarg; // tablica argumentów DISPID FAR* rgdispidnamedargs; // Identyfikatory argumentów zdefiniowanych nazwami unsigned int cargs; // Liczba argumentów unsigned int cnamedargs; // Liczba argumentów zdefiniowanych nazwami DISPPARAMS; Parametry w tablicy rgvarg są przekazywane w odwrotnej kolejności, tj. rgvarg[cargs 1] pierwszy parametr rgvarg[0] ostatni parametr 1.3

4 19 20 Zmienna typu VARIANT: typedef struct FARSTRUCT tagvariant VARIANTARG; struct FARSTRUCT tagvariant{ VARTYPE vt; //typ parametru unsigned short wreserved1; unsigned short wreserved2; unsigned short wreserved3; union { short ival; /* VT_I2 */ // wartość parametru // The rest of this union specifies numerous other types. Zmienna typu VARTYPE: typedef unsigned short VARTYPE; enum VARENUM { VT_EMPTY = 0, VT_NULL = 1, VT_I2 = 2, VT_I4 = 3, VT_R4 = 4, VT_R8 = 5, VT_CY = 6, VT_DATE = 7, VT_BSTR = 8, VT_DISPATCH = 9, VT_ERROR = 10, VT_BOOL = 11, VT_VARIANT = 12, VT_UNKNOWN = 13, VT_UI1 = 17,... ; ; VARIANTARG; VT_RESERVED = 0x8000 VT_BYREF = 0x4000 VT_ARRAY = 0x Przykład wywołania metody Simple klasy CMyObject (bez parametrów): Przykład wywołania metody Simple klasy CMyObject (bez parametrów) cd.: HRESULT hresult; // rezultat wykonania funkcji IUnknown FAR* punk; // wskaźnik do interfejsu IUnknown IDispatch FAR* pdisp = (IDispatch FAR*)NULL; // wskaźnik do interfejsu IDispatch OLECHAR FAR* szmember = "Simple"; // nazwa metody DISPID dispid; // identyfikator metody DISPPARAMS dispparams = {NULL, NULL, 0, 0; // struktura z parametrami dla metody Simple //Osadzenie obiektu klasy CMyObject i pobranie wskaźnika do interfejsu IUnknown (punk) hresult = CoCreateInstance(CLSID_CMyObject,NULL, CLSCTX_SERVER, IID_Unknown, (void FAR* FAR*)&punk); // Pobranie wskaźnika do interfejsu IDispatch (pdisp) hresult = punk->queryinterface(iid_idispatch, (void FAR* FAR*)&pdisp); // Pobranie identyfikatora metody Simple (dispid) hresult = pdisp->getidsofnames(iid_null, &szmember, 1, LOCALE_USER_DEFAULT, &dispid); // Wywołanie funkcji Simple hresult = pdisp->invoke( dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &dispparams, NULL, NULL, NULL); Przykład pobrania wartości właściwości On: VARIANT FAR *pvarresult; // wskaźnik do zmiennej typu VARIANT, // przechowującej wartość // odczytanej właściwości. //... szmember = "On"; hresult = pdisp->getidsofnames(iid_null, &szmember, 1, LOCALE_USER_DEFAULT, &dispid); hresult = pdisp->invoke( dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &dispparams, pvarresult, NULL, NULL); Przykład zmiany wartości właściwości On: // identyfikator reprezentujący zmianę wartości właściwości DISPID mydispid = DISPID_PROPERTYPUT dispparams.rgvarg[0].vt = VT_BOOL; // typ właściwości dispparams.rgvarg[0].bool = FALSE; // nowa wartość // Zmieniając wartość właściwości musimy podać argument // zdefiniowany nazwą reprezentujący przypisanie wartości // do właściwości. dispparams.rgdispidnamedargs = &mydispid; dispparams.cargs = 1; dispparams.cnamedargs = 1; // zmiana właściwości hresult = pdisp->invoke( dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, &dispparams, NULL, NULL, NULL); 1.4

5 25 Kontrolki 26 Rejestrowanie kontrolek Zagadnienia: 1. Technologia Rejestrowanie kontrolek 4. Projektowanie kontrolki w Visual Studio C++ 5. Wykorzystanie kontrolek Jeśli kontrolka nie posiada programu instalacyjnego to należy ją zarejestrować programem regsvr32.exe, np. regsvr32.exe MyCtrl.ocx. Rejestracja kontrolki polega na zapisaniu w rejestrze Windows większości informacji dotyczących obiektu (np. lokalizacja kontrolki na dysku). Informacje te są wykorzystywane za każdym razem, kiedy aplikacja używa obiektu. Program regsvr32.exe ponadto wywołuje funkcję DLLSelfRegister. Parametry programu regsvr32.exe: Regsvr32 [/u] [/s] [/n] [/i[:cmdline]] dllname /s - Silent; display no message boxes /u - Unregister server /i - Call DllInstall passing it an optional [cmdline]; when used with /u calls dll uninstall /n - do not call DllRegisterServer; this option must be used with /i 27 Rejestrowanie kontrolek 28 Kontrolki Każda kontrolka ma przypisany unikalny identyfikator (CLSID) class ID. Jest to liczba 128 bitowa zapisana heksalnie np. {03437DCB B253-02B4939A2CF4 Zarejestrowane w systemie kontrolki są wyszczególnione w gałęzi HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID Zagadnienia: 1. Technologia Rejestrowanie kontrolek 4. Projektowanie kontrolki w Visual Studio C++ 5. Wykorzystanie kontrolek 29 Projektowanie kontrolki 30 Projektowanie kontrolki Liczba kontrolek w projekcie Czy będzie wymagana licencja? Czy w kodzie mają być zamieszczane komentarze? Czy mają być wygenerowane szkieletowe pliki pomocy? 1.5

6 31 Projektowanie kontrolki 32 Projektowanie kontrolki Klasy wykorzystywane do budowania kontrolki: CSimpleSliderApp:COleControlModule:CWnd Czy kontrolka ma się uaktywniać gdy staje się widoczna? Czy kontrolka może być niewidoczna w czasie działania? Czy kontrolka ma być dostępna z poziomu innych projektów? Czy kontrolka ma pełnić tylko funkcję pojemnika? Klasa zawiera dwie metody wykorzystywane przy ładowaniu i usuwaniu kontrolki z pamięci InitInstance(); ExitInstance(); CSimpleSliderCtrl:COleControl:CWnd Klasa zapewnia podstawową funkcjonalność kontrolki. Zawiera metody i właściwości oraz pozwala na generowanie zdarzeń. CSimpleSliderPropPage:COlePropertyPage:CWnd Klasa okna dialogowego właściwości kontrolki. 33 Projektowanie kontrolki 34 Projektowanie kontrolki /////////////////////////////////////////////////////////////// // CSimpleSliderCtrl::OnDraw - Drawing function void CSimpleSliderCtrl::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))); pdc->ellipse(rcbounds); 35 Projektowanie kontrolki 36 Projektowanie kontrolki Kontrolka SimpleSlider Kontrolka SimpleSlider m_min m_pos m_max Właściwości: m_min/m_max minimalna/maksymalna wartość m_pos położenie suwaka (m_min < m_pos < m_max) Metody: short GetPosition(); pobranie aktualnej pozycji suwaka void SetPosition(short nnewvalue); ustawienie nowej pozycji suwaka void GetRange(short *min, short *max); pobranie zakresu void SetRange(short min, short max); ustawienie zakresu void OnMaxChanged(); zmiana wartości maksymalnej void OnMinChanged(); zmiana wartości maksymalnej 1.6

7 37 Projektowanie kontrolki 38 Projektowanie kontrolki Dodawanie właściwości class CSimpleSliderCtrl : public COleControl { DECLARE_DYNCREATE(CSimpleSliderCtrl) public: CSimpleSliderCtrl(); virtual void OnDraw(CDC* pdc, const CRect& rcbounds, const CRect& rcinvalid); virtual void DoPropExchange(CPropExchange* ppx); virtual void OnResetState(); protected: ~CSimpleSliderCtrl(); private: short m_width; // szerokość kontrolki short m_pos; // aktualne położenie suwaka short m_pos0; // poprzednie położenie suwaka ; Dodawanie właściwości 39 Projektowanie kontrolki 40 Projektowanie kontrolki Dodawanie właściwości Dodawanie właściwości Właściwość: m_pos - Nazwa zewnętrzna Position Metody: short GetPosition(); void SetPosition(short nnewvalue); Właściwości: m_min, m_max Metody: void OnMinChanged(); void OnMaxChanged(); 41 Projektowanie kontrolki 42 Projektowanie kontrolki Dodawanie metod Dodawanie zdarzeń Metody: void GetRange(short *, short *); void SetRange(short, short); 1.7

8 43 Projektowanie kontrolki 44 Projektowanie kontrolki Dodawanie zdarzeń Edycja kodu źródłowego // dodatkowa funkcja kontroli zakresu BOOL CSimpleSliderCtrl::CheckValues() { BOOL modified = FALSE; if (m_min >= m_max) { m_min = 0; m_max = 100; modified = TRUE; if (m_pos < m_min) { m_pos = m_min; modified = TRUE; if (m_pos > m_max) { m_pos = m_max; modified = TRUE; return modified; 45 Projektowanie kontrolki 46 Projektowanie kontrolki Edycja kodu źródłowego short CSimpleSliderCtrl::GetPosition() { return m_pos; void CSimpleSliderCtrl::SetPosition(short nnewvalue) { m_pos = nnewvalue; if (CheckValues()) FireParamsModified(); InvalidateControl();//wymuszenie wykonania funkcji OnDraw void CSimpleSliderCtrl::GetRange(short *min, short *max) { *min = m_min; *max = m_max; void CSimpleSliderCtrl::SetRange(short min, short max) { m_min = min; m_max = max; if (CheckValues()) FireParamsModified(); Edycja kodu źródłowego void CSimpleSliderCtrl::OnResetState() { // Resets defaults found in DoPropExchange COleControl::OnResetState(); m_min = 0; m_max = 100; m_pos = 50; void CSimpleSliderCtrl::OnMinChanged() { if (CheckValues()) FireParamsModified(); InvalidateControl(); void CSimpleSliderCtrl::OnMaxChanged() { if (CheckValues()) FireParamsModified(); InvalidateControl(); 47 Projektowanie kontrolki 48 Projektowanie kontrolki Edycja kodu źródłowego void CSimpleSliderCtrl::OnDraw(CDC* pdc, const CRect& rcbounds, const CRect& rcinvalid) { // rcbounds wymiary okienka kontrolki // klasa CRect zawiera pola: left, top, right, bottom. // szerokość kontrolki m_width = rcbounds.right - rcbounds.left; // obliczenie położenia suwaka względem okienka kontrolki int centerpos = m_width * (m_pos-m_min) / (m_max-m_min); // Suwak stanowi dwa przylegające do siebie prostokąty CRect selbounds = rcbounds, notselbounds = rcbounds; //... Edycja kodu źródłowego //... selbounds.right = centerpos; CBrush lselbrush; lselbrush.createsolidbrush(rgb(0, 64, 224)); pdc->selectobject(&lselbrush); pdc->fillrect(selbounds,&lselbrush); notselbounds.left = centerpos; CBrush lnotselbrush; lnotselbrush.createsolidbrush(rgb(224, 224, 224)); pdc->selectobject(&lnotselbrush); pdc->fillrect(notselbounds,&lnotselbrush); 1.8

9 49 Projektowanie kontrolki 50 Projektowanie kontrolki Funkcje obsługi zdarzeń WM_MOUSEMOVE i WM_LBUTTONDOWN WM_MOUSEMOVE void CSimpleSliderCtrl::OnMouseMove(UINT nflags,cpoint point) { if ((nflags & MK_LBUTTON) == MK_LBUTTON) { m_pos = m_min + (m_max - m_min) * point.x / m_width; CheckValues(); if (m_pos!= m_pos0) { // wywołanie zdarzenia PosChanged FirePosChanged(m_pos); m_pos0 = m_pos; InvalidateControl(); COleControl::OnMouseMove(nFlags, point); Funkcje obsługi zdarzeń WM_MOUSEMOVE i WM_LBUTTONDOWN WM_LBUTTONDOWN void CSimpleSliderCtrl::OnLButtonDown(UINT nflags,cpoint point) { m_pos = m_min + (m_max - m_min) * point.x / m_width; FirePosChanged(m_pos); InvalidateControl(); COleControl::OnLButtonDown(nFlags, point); 51 Projektowanie kontrolki 52 Projektowanie kontrolki Edycja okna właściwości Edycja okna właściwości 53 Projektowanie kontrolki 54 Projektowanie kontrolki Funkcja obsługi okna właściwości void CSimpleSliderCtrl::DoPropExchange(CPropExchange* ppx) { ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wvermajor)); COleControl::DoPropExchange(pPX); PX_Short(pPX, _T("Position"), (short &)m_pos, 50); PX_Short(pPX, _T("Min"), (short &)m_min, 0); PX_Short(pPX, _T("Max"), (short &)m_max, 100); Testowanie kontrolki BOOL PX_Short( CPropExchange* ppx, //wskaźnik do obiektu klasy CPropExchange LPCTSTR pszpropname, // nazwa modyfikowanej właściwości short& svalue, // zmienna przechowująca wartość // właściwości w klasie COlePropertyPage sdefault // domyślna wartość właściwości ); 1.9

10 55 Projektowanie kontrolki 56 Kontrolki Testowanie kontrolki Zagadnienia: 1. Technologia Rejestrowanie kontrolek 4. Projektowanie kontrolki w Visual Studio C++ 5. Wykorzystanie kontrolek z kontrolką SimpleSlider Klasa dodana do projektu po utworzeniu zmiennej m_slider class CSimpleSlider : public CWnd { public: CLSID const& GetClsid() { static CLSID const clsid = { 0x3437dcb, 0x1719, 0x4119, { 0xb2, 0x53, 0x2, 0xb4, 0x93, 0x9a, 0x2c, 0xf4 ; return clsid; // Attributes short GetMin(); short GetMax(); void SetMin(short); void SetMax(short); short GetPosition(); void SetPosition(short); // Operations void SetRange(short Min, short Max); void GetRange(short* Min, short* Max); ; Przykładowe metody klasy CSimpleSlider w projekcie short CSimpleSlider::GetMin() { short result; GetProperty(0x1, VT_I2, (void*)&result); return result; void CSimpleSlider::SetMin(short propval) { SetProperty(0x1, VT_I2, propval); short CSimpleSlider::GetPosition() { short result; GetProperty(0x3, VT_I2, (void*)&result); return result; void CSimpleSlider::SetPosition(short propval) { SetProperty(0x3, VT_I2, propval); Przykładowe metody klasy CSimpleSlider w projekcie ///////////////////////////////////////////////////////////////// // CSimpleSlider operations void CSimpleSlider::SetRange(short Min, short Max) { static BYTE parms[] = VTS_I2 VTS_I2; InvokeHelper(0x4, DISPATCH_METHOD, VT_EMPTY, NULL, parms, Min, Max); void CSimpleSlider::GetRange(short* Min, short* Max) { static BYTE parms[] = VTS_PI2 VTS_PI2; InvokeHelper(0x5, DISPATCH_METHOD, VT_EMPTY, NULL, parms, Min, Max); 1.10

11 61 62 Uzupełnienie kodu źródłowego aplikacji testslider Dodanie funkcji obsługi zdarzeń PosChanged i ParamsModified void CTestSliderDlg::OnGet() { m_slider.getrange(&m_min, &m_max); m_pos = m_slider.getposition(); UpdateData(FALSE); void CTestSliderDlg::OnSet() { UpdateData(TRUE); m_slider.setrange(m_min, m_max); m_slider.setposition(m_pos); Uzupełnienie kodu źródłowego funkcji obsługi zdarzeń kontrolki SimpleSlider Dynamiczne dodawanie kontrolek do aplikacji void CTestSliderDlg::OnPosChangedSimpleslider(short newpos) { m_pos = newpos; UpdateData(FALSE); void CTestSliderDlg::OnParamsModifiedSimpleslider() { m_pos = m_slider.getposition(); m_slider.getrange(&m_min, &m_max); UpdateData(FALSE); 65 Dynamiczne dodawanie kontrolek do aplikacji class CTestSliderDlg : public CDialog { //... // m_slider2 - zmienna kontrolki tworzonej dynamicznie CSimpleSlider m_slider, m_slider2; /... ; void CTestSliderDlg::OnCreateActivex() { m_slider2.createcontrol(m_slider2.getclsid(), NULL, WS_VISIBLE, CRect(20,200,320,260), this, 0); void CTestSliderDlg::OnDestroyActivex() { m_slider2.destroywindow(); 1.11

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych Laboratorium OiOSE. Programowanie w środowisku MS Visual C++ 1 Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych Organizacja i Oprogramowanie Systemów Elektronicznych Michał Kowalewski

Bardziej szczegółowo

Programowanie składnikowe. Programowanie składnikowe w modelu COM. COM - Component Object Model. wprowadzenie. Programowanie składnikowe

Programowanie składnikowe. Programowanie składnikowe w modelu COM. COM - Component Object Model. wprowadzenie. Programowanie składnikowe Programowanie składnikowe w modelu COM wprowadzenie Jarosław Francik COM - Component Object Model Programowanie składnikowe Programowanie składnikowe 1 Program - monolit 1 Program składnikowy Składnik

Bardziej szczegółowo

Technologie COM i ActiveX COM - Component Object Model

Technologie COM i ActiveX COM - Component Object Model Technologie COM i COM - Component Object Model Jarosław Francik COM - Common Object Model Program - monolit Program składnikowy Składnik A Składnik B Składnik C Składnik D Składnik E Architektura składnikowa

Bardziej szczegółowo

Dodanie nowej formy do projektu polega na:

Dodanie nowej formy do projektu polega na: 7 Tworzenie formy Forma jest podstawowym elementem dla tworzenia interfejsu użytkownika aplikacji systemu Windows. Umożliwia uruchomienie aplikacji, oraz komunikację z użytkownikiem aplikacji. W trakcie

Bardziej szczegółowo

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych Laboratorium OiOSE. Projektowannie kontrolek ActiveX 1 Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych Organizacja i Oprogramowanie Systemów Elektronicznych Michał Kowalewski Projektowannie

Bardziej szczegółowo

Zdarzenia (events, connection points)

Zdarzenia (events, connection points) (events, connection points) Serwer komunikuje się z klientem za pomocą zgłoszenia zdarzenia. Pozwala to na asynchroniczną pracę serwera, który zgłasza zaistnienie określonego stanu za pomocą serii zdarzeń.

Bardziej szczegółowo

Architektura składnikowa a architektura klient serwer. Programowanie składnikowe. Programowanie składnikowe w modelu COM

Architektura składnikowa a architektura klient serwer. Programowanie składnikowe. Programowanie składnikowe w modelu COM w modelu COM wprowadzenie Architektura składnikowa a architektura klient serwer Architektura klient-serwer Program składnikowy Jarosław Francik Serwer Składnik B Składnik A A B Składnik C Programowanie

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Komunikacja i wymiana danych

Komunikacja i wymiana danych Budowa i oprogramowanie komputerowych systemów sterowania Wykład 10 Komunikacja i wymiana danych Metody wymiany danych Lokalne Pliki txt, csv, xls, xml Biblioteki LIB / DLL DDE, FastDDE OLE, COM, ActiveX

Bardziej szczegółowo

Obiekty w plikach wykonywalnych, marshaling

Obiekty w plikach wykonywalnych, marshaling Obiekty w plikach wykonywalnych, marshaling Komponent w pliku exe Odczyt IClassFactory komponencie umieszczonym w pliku dll ładowanym w przestrzeń adresową klienta następuje poprzez wywołanie eksportowanej

Bardziej szczegółowo

Agregacja. Wykorzystanie innego komponentu bez użycia agregacji. Simple calculator. Extended calculator

Agregacja. Wykorzystanie innego komponentu bez użycia agregacji. Simple calculator. Extended calculator Agregacja Agregacja Agregacja jest to wykorzystywanie przez komponent nadrzędny innego komponentu w taki sposób, że udostępnia jego interfejs jako własny. Aby komponent mógł być użyty jako agregat, metody

Bardziej szczegółowo

Microsoft Interface Definition Language

Microsoft Interface Definition Language Microsoft Interface Definition Language IDL IDL (Interface Definition Language) kompilowany jest przez MIDL.exe: Tworzy pliki nagłówkowe klas abstrakcyjnych dla zdefiniowanych w pliku *.idl interfejsów

Bardziej szczegółowo

Dostrzeżenie ograniczeń schowka [koniec lat 80-tych] OLE 1.0 [1991]

Dostrzeżenie ograniczeń schowka [koniec lat 80-tych] OLE 1.0 [1991] 1 OLE Dostrzeżenie ograniczeń schowka [koniec lat 80-tych] OLE 1.0 [1991] Object Linking & Embedding osadzanie obiektów w dokumentach dokumenty jako kontenery obiektów OLE 2.0 [1993] COM - Component Object

Bardziej szczegółowo

Delphi podstawy programowania. Środowisko Delphi

Delphi podstawy programowania. Środowisko Delphi Delphi podstawy programowania Środowisko Delphi Olsztyn 2004 Delphi Programowanie obiektowe - (object-oriented programming) jest to metodologia tworzeniu programów komputerowych definiująca je jako zbiór

Bardziej szczegółowo

Instrukcja laboratoryjna cz.3

Instrukcja laboratoryjna cz.3 Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

Microsoft Visual C++

Microsoft Visual C++ Microsoft Visual C++ Typy aplikacji okna dialogowe Typy aplikacji Multiple Document Obsługa zdarzeń - komunikaty W celu obsługi zdarzeń pochodzących z wielu źródeł funkcja MainLoop odbiera komunikaty systemowe

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do

Bardziej szczegółowo

4 bity zarezerwowane dla przyszłych zastosowań 11 bitów określających źródło błędu 16 bitów określających rodzaj błędu.

4 bity zarezerwowane dla przyszłych zastosowań 11 bitów określających źródło błędu 16 bitów określających rodzaj błędu. Zgłaszanie błędów HRESULT Każda metoda interfejsu COM zwraca informację o błędzie w postaci typu HRESULT (long int). Struktura reprezentacji bitowej HRESULT podzielona jest na 4 sekcje: 1 bit błędu 4 bity

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w

Bardziej szczegółowo

//////////////////////////////////////////////////////////// // Kalkulator (prosty) - wersja agregowalna import "unknwn.idl";

//////////////////////////////////////////////////////////// // Kalkulator (prosty) - wersja agregowalna import unknwn.idl; / Kalkulator (prosty) - wersja agregowalna import "unknwn.idl"; Interface ICalc uuid(892753ed-d14e-4d2f-b812-041e0c01f5f3), helpstring("kalkulator (prosty), wersja agregowalna"), interface ICalc : IUnknown

Bardziej szczegółowo

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla

Bardziej szczegółowo

Visual Basic for Applications. Formatki tworzenie,

Visual Basic for Applications. Formatki tworzenie, Visual Basic for Applications Formatki tworzenie, sterowanie, właściwości. Podstawowe typy kontrolek: Wybrane właściwości obiektu UserForm: BackColor kolor wypełnienia tła formatki, BorderStyle fmborderstylenone/fmborderstylesingle,

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu

Bardziej szczegółowo

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty

Bardziej szczegółowo

Zaawansowane aplikacje internetowe - laboratorium

Zaawansowane aplikacje internetowe - laboratorium Zaawansowane aplikacje internetowe - laboratorium Web Services (część 3). Do wykonania ćwiczeń potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2005. Ponadto wymagany jest

Bardziej szczegółowo

Laboratorium 1 - Programowanie proceduralne i obiektowe

Laboratorium 1 - Programowanie proceduralne i obiektowe Laboratorium 1 - Programowanie proceduralne i obiektowe mgr inż. Kajetan Kurus 4 marca 2014 1 Podstawy teoretyczne 1. Programowanie proceduralne (powtórzenie z poprzedniego semestru) (a) Czym się charakteryzuje?

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

// LISTING #2 DRUGIE PODEJŚCIE

// LISTING #2 DRUGIE PODEJŚCIE OD KLASY C++ DO SERWERA COM: PROGRAMY PRZYKŁADOWE DO WYKŁADU PROGRAMOWANIE SKŁADNIKOWE W MODELU COM OPRACOWANIE: JAROSŁAW FRANCIK // LISTING #1 PIERWSZE PODEJŚCIE // LISTING #2 DRUGIE PODEJŚCIE #include

Bardziej szczegółowo

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz Aplikacja internetowa zbudowana w oparciu o środowisko Visual Web Java Server Faces. Zarządzanie obiektami typu SesionBeans, RequestBeen i ApplicationBeans, Laboratorium 1 Wzorce oprogramowania lab1, Okres

Bardziej szczegółowo

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY Różne właściwości Funkcje tak samo jak zmienne mają swoje miejsce w pamięci, gdzie są zapisane. Można więc uzyskać ich adres. Podobnie jak adres tablicy jest zwracany przez jej nazwę, podaną bez nawiasu

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 07 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami tworzenia aplikacji okienkowych w C#. Wprowadzenie teoretyczne. Rozważana w

Bardziej szczegółowo

Układy VLSI Bramki 1.0

Układy VLSI Bramki 1.0 Spis treści: 1. Wstęp... 2 2. Opis edytora schematów... 2 2.1 Dodawanie bramek do schematu:... 3 2.2 Łączenie bramek... 3 2.3 Usuwanie bramek... 3 2.4 Usuwanie pojedynczych połączeń... 4 2.5 Dodawanie

Bardziej szczegółowo

// LISTING #2 DRUGIE PODEJŚCIE

// LISTING #2 DRUGIE PODEJŚCIE OD KLASY C++ DO SERWERA COM: PROGRAMY PRZYKŁADOWE DO WYKŁADU PROGRAMOWANIE SKŁADNIKOWE W MODELU COM OPRACOWANIE: JAROSŁAW FRANCIK LISTING #1 PIERWSZE PODEJŚCIE LISTING #2 DRUGIE PODEJŚCIE #include

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Praca w środowisku Visual Studio 2008, Visual C

Praca w środowisku Visual Studio 2008, Visual C Praca w środowisku Visual Studio 2008, Visual C++ 2008 mgr inż. Tomasz Jaworski tjaworski@kis.p.lodz.pl http://tjaworski.kis.p.lodz.pl/ Tworzenie aplikacji konsolowych 2 3 Tworzenie nowego projektu aplikacji

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/ Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL.04.01.01-00-449/08-00

Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL.04.01.01-00-449/08-00 Henryk Budzisz ZPORR nr POKL.04.01.01-00-449/08-00 Koszalin 2009 Technologia COM Wprowadzenie COM Interfejsy Technologia COM w Visual C++ Globally Unique Identifiers (GUIDs) Biblioteka COM Tworzenie obiektu

Bardziej szczegółowo

Visual Studio instalacja

Visual Studio instalacja Visual Studio 2017 - instalacja Do tej pory napisaliśmy wiele programów, z czego niemal wszystkie były aplikacjami konsolowymi. Najwyższy więc czas zająć się tworzeniem aplikacji z graficznym interfejsem

Bardziej szczegółowo

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Wykład 12. Programowanie serwera MS SQL 2005 w C# Wykład 12 Programowanie serwera MS SQL 2005 w C# Budowa procedur składowanych w C# Budowa funkcji składowanych w C# Wykorzystanie funkcji składowanych w C# po stronie klienta Tworzenie typów definiowanych

Bardziej szczegółowo

OLE: Pojęcia podstawowe

OLE: Pojęcia podstawowe OLE: Object Linking and Embedding Programowanie składnikowe w modelu COM Jarosław Francik czerwiec 2002 OLE: Pojęcia podstawowe OLE technologia polegająca na tworzeniu złożonych dokumentów Przez pewien

Bardziej szczegółowo

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt 1. Wprowadzenie Wymagania wstępne: wykonanie ćwiczeń Adresacja IP oraz Implementacja aplikacji sieciowych z wykorzystaniem interfejsu gniazd

Bardziej szczegółowo

INTENSE PLATFORM Zmiany w wersji Wersja 7.2

INTENSE PLATFORM Zmiany w wersji Wersja 7.2 0 Business Intelligence w przedsiębiorstwie INTENSE PLATFORM Zmiany w wersji Wersja 7.2 1 Spis treści... 0 Wstęp... 2 Nowości w wersji... 2 Obsługa dużych załączników (warunkowe wczytywanie)... 2 Nowy

Bardziej szczegółowo

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse... KORZYSTANIE Z KONTROLKI.NET LENDEVICERS232 DODAWANIE KONTROLKI DO ZBIORU KOMPONENTÓW DOSTĘPNYCH W PALECIE TOOLBOX (ŚRODOWISKA PROGRAMISTYCZNE FIRMY MICROSOFT) W środowisku programistycznym (Visual C++,

Bardziej szczegółowo

Aplikacje w środowisku VBA. Visual Basic for Aplications

Aplikacje w środowisku VBA. Visual Basic for Aplications Aplikacje w środowisku VBA Visual Basic for Aplications Podstawowe informacje o VBA Visual Basic for Aplications, w skrócie VBA, to język programowania rozwijany przez Microsoft, którego zastosowanie pozwala

Bardziej szczegółowo

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania Wykład: 5 Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania w C++ Instrukcje sterujące 2 dr Artur Bartoszewski

Bardziej szczegółowo

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem. Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Typy c.d. 2 Typy zmiennych Instrukcja typedef -

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

Droga do DCOM DCOM (1996) Windows clipboard (1987) OLE 1 DDE (1992) OLE 2 (1993) COM (1995) Distributed computing (1980s)

Droga do DCOM DCOM (1996) Windows clipboard (1987) OLE 1 DDE (1992) OLE 2 (1993) COM (1995) Distributed computing (1980s) COM jako standard Droga do DCOM Windows clipboard (1987) OLE 1 DDE (1992) OLE 2 (1993) COM (1995) Distributed computing (1980s) Open Software Foundation Distributed Computing Environment Remote Procedure

Bardziej szczegółowo

Lokalizacja Oprogramowania

Lokalizacja Oprogramowania mgr inż. Anton Smoliński anton.smolinski@zut.edu.pl Lokalizacja Oprogramowania 02/12/2016 Wykład 5 Lokalizacja interfejsów użytkownika Agenda Programiści i tłumacze w procesie lokalizacji Tworzenie GUI

Bardziej szczegółowo

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1 1 LINQ 1 1. Cel zajęć Celem zajęć jest zapoznanie się z technologią LINQ oraz tworzeniem trójwarstwowej aplikacji internetowej. 2. Zadanie Proszę przygotować aplikację WWW, która: będzie pozwalała na generowanie

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

Pola i metody statyczne. Klasy zawierające pola i metody statyczne Instrukcja laboratoryjna nr 1 Programowanie w języku C 2 (C++ poziom zaawansowany) Pola i metody statyczne. Klasy zawierające pola i metody statyczne dr inż. Kaczmarek Tomasz mgr inż. Lasota Maciej dr

Bardziej szczegółowo

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale

Bardziej szczegółowo

1.1. System otwartych baz danych ODBC. System otwartych baz danych ODBC. Interfejs ODBC. Interfejs ODBC. System otwartych baz danych ODBC

1.1. System otwartych baz danych ODBC. System otwartych baz danych ODBC. Interfejs ODBC. Interfejs ODBC. System otwartych baz danych ODBC 1 Katedra Optoelektroniki i Systemów Elektronicznych 2 Oprogramowanie Systemów Elektronicznych Zagadnienia: Temat wykładu 1. Interfejs ODBC 2. 3. 3 Interfejs ODBC 4 Interfejs ODBC ODBC (Open DataBase Connectivity)

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 3.

Programowanie 2. Język C++. Wykład 3. 3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja

Bardziej szczegółowo

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych Jacek Matulewski Materiały dla Podyplomowego Studium Programowania i Zastosowania Komputerów, sekcja Projektowanie i tworzenie aplikacji

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie

Bardziej szczegółowo

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium: Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

Bardziej szczegółowo

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? 1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie

Bardziej szczegółowo

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu. .NET Klasy, obiekty Klasa i obiekt Każdy obiektowy język programowania daje programiście możliwość tworzenia nowych typów danych. Nowy typ danych definiuje się poprzez zdefiniowanie klasy. Co to jest klasa?

Bardziej szczegółowo

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń

Bardziej szczegółowo

PHP 5 język obiektowy

PHP 5 język obiektowy PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje

Bardziej szczegółowo

VBA w Excel Lekcja ta ma przybliżyć pojęcia związane z programowaniem w pakiecie Office. Poniższe przykłady związane są z wersją Office2007.

VBA w Excel Lekcja ta ma przybliżyć pojęcia związane z programowaniem w pakiecie Office. Poniższe przykłady związane są z wersją Office2007. VBA w Excel Lekcja ta ma przybliżyć pojęcia związane z programowaniem w pakiecie Office. Poniższe przykłady związane są z wersją Office2007. VBA To odmiana języka Basic przystosowany do programowania w

Bardziej szczegółowo

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main Język obiektowy Wykład 13 Programowanie obiektowe z lotu ptaka, str 1 James Gosling, Mike Sheridan, Patrick Naughton Sun Microsystems 1995(20latmłodszyodC) C jest językiem proceduralnym Java jest językiem

Bardziej szczegółowo

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania 1) Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z podstawowymi elementami obiektowymi systemu Windows wykorzystując Visual Studio 2008 takimi jak: przyciski, pola tekstowe, okna pobierania danych

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 6 - szablony. dr inż. Robert Nowak - p. 1/15 Kolekcje i algorytmy» Deklaracja szablonu y Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania

Bardziej szczegółowo

Wykład 5 Okna MDI i SDI, dziedziczenie

Wykład 5 Okna MDI i SDI, dziedziczenie Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

Podstawy Rejestru systemu. Poddrzewa

Podstawy Rejestru systemu. Poddrzewa Podstawy Rejestru systemu Rejestr systemu Windows jest przechowywany w kilku różnych plikach na komputerze. Pliki te są nazywane hives (ule) i umieszczone są w folderach \Windows\system32\config i \Documents

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Klasy w C++

Zaawansowane programowanie w języku C++ Klasy w C++ Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń

Bardziej szczegółowo

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Projektowanie obiektowe. Roman Simiński  Wzorce projektowe Wybrane wzorce strukturalne Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec

Bardziej szczegółowo

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów

Bardziej szczegółowo

Interfejs użytkownika (ang. User Interface, UI) w technice część urządzenia odpowiedzialna za interakcję z użytkownikiem

Interfejs użytkownika (ang. User Interface, UI) w technice część urządzenia odpowiedzialna za interakcję z użytkownikiem Interfejs użytkownika (ang. User Interface, UI) w technice część urządzenia odpowiedzialna za interakcję z użytkownikiem Dodawanie kontrolek i komponentów Podczas budowania bazującej na formularzach aplikacji

Bardziej szczegółowo

Rys.1. Technika zestawiania części za pomocą polecenia WSTAWIAJĄCE (insert)

Rys.1. Technika zestawiania części za pomocą polecenia WSTAWIAJĄCE (insert) Procesy i techniki produkcyjne Wydział Mechaniczny Ćwiczenie 3 (2) CAD/CAM Zasady budowy bibliotek parametrycznych Cel ćwiczenia: Celem tego zestawu ćwiczeń 3.1, 3.2 jest opanowanie techniki budowy i wykorzystania

Bardziej szczegółowo

Laboratorium Systemów SCADA

Laboratorium Systemów SCADA Laboratorium Systemów SCADA Ćwiczenie 4. Tworzenie skryptów w programie InTouch Opracował: dr hab. inż. Sebastian Dudzik 1. Cel ćwiczenia Zapoznanie się z rodzajami skryptów w programie InTouch. Zapoznanie

Bardziej szczegółowo

Projekt Hurtownia, realizacja rejestracji dostaw produktów

Projekt Hurtownia, realizacja rejestracji dostaw produktów Projekt Hurtownia, realizacja rejestracji dostaw produktów Ćwiczenie to będzie poświęcone zaprojektowaniu formularza pozwalającego na rejestrację dostaw produktów dla naszej hurtowni. Dane identyfikujące

Bardziej szczegółowo

Projektowanie klas c.d. Projektowanie klas przykład

Projektowanie klas c.d. Projektowanie klas przykład Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej

Bardziej szczegółowo