1.1. Kontrolki ActiveX. Kontrolki ActiveX. Technologia ActiveX. Technologia ActiveX. Technologia ActiveX. Technologia ActiveX.
|
|
- Adam Urbański
- 8 lat temu
- Przeglądów:
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
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ółowoProgramowanie 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ółowoTechnologie 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ółowoDodanie 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ółowoPolitechnika 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ółowoZdarzenia (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ółowoArchitektura 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ółowoProgramowanie 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ółowoProgramowanie 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ółowoKomunikacja 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ółowoObiekty 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ółowoAgregacja. 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ółowoMicrosoft 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ółowoDostrzeż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ółowoDelphi 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ółowoInstrukcja 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ółowoProgramowanie 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ółowoObiektowy 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ółowoMicrosoft 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ółowoMultimedia 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ółowoProgramowanie 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ółowo4 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ółowo1. 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ółowoProgramowanie 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"; 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
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ółowoVisual 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ółowoWykł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ółowoDzisiejszy 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ółowoWykł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ółowoZaawansowane 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ółowoLaboratorium 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ółowoProgramowanie 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ółowoWykł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ółowoPROE 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ółowoJava - 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ółowoInformatyka 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
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ółowoLaboratorium 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ółowoRóż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ółowoRozdział 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ółowoSposoby 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ółowoProgramowanie 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ółowoUkł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
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ółowoTemat: 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ółowoPraca 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ółowoUML 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ółowoJę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ółowoJę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ółowoHenryk 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ółowoVisual 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ółowoWykł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ółowoOLE: 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ółowoImplementacja 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ółowoINTENSE 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ółowo2. 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ółowoAplikacje 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ółowoPodstawy 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ółowoJę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ółowoUwagi 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ółowoDroga 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ółowoLokalizacja 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ółowo1 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ółowoJAVA 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ółowoKLASA 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ółowoPola 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ółowoC++ - 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ółowo1.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ółowoProgramowanie 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ółowoKLASA 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ółowoTechniki 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ółowoRozdział 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ółowoStrona 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ółowoPodstawy 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ółowoLaboratorium 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ółowoMETODY 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ółowoJava. 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ółowoPodstawy 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ółowo1. 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ółowoCo 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ółowoJava: 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ółowoPHP 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ółowoVBA 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ółowoKompilacja 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ółowoPolitechnika 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ółowoZaawansowane 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ółowoWykł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ółowoKurs 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ółowoDariusz 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ółowoLaboratorium 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ółowoPodstawy 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ółowoZaawansowane 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ółowoProjektowanie 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ółowoC++ - 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ółowoInterfejs 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ółowoRys.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ółowoLaboratorium 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ółowoProjekt 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ółowoProjektowanie 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