Programowanie urządzeń mobilnych

Slides:



Advertisements
Podobne prezentacje
Prezentacja na temat: Porównanie Windows XP i Windows 7
Advertisements

Programowanie obiektowe
Generics w .NET 2.0 Łukasz Rzeszot.
Wprowadzenie do C++ Zajęcia 2.
Sieci komputerowe.
ADAM Active Directory w trybie aplikacyjnym
Microsoft Office System w praktyce wdrożenie w COMARCH-CDN
CLR na platformie .NET Tomasz Kostarski.
.NET - możliwości Jarosław Balcer & Jan Góralski.
Platforma .Net i Vs.Net.
Tworzenie ASP.NET Web Form
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Systemy operacyjne.
Systemy operacyjne Bibliografia:
Systemy operacyjne Bibliografia:
ASP.NET i platforma.NET Technologie internetowe ( ) Tomasz Popów
P I OTR SKOŁYSZ. POCHODZENIE I CELE CZYM JEST.NET ? CO IMPLEMENTUJE MONO ? ŚRODOWISKO PRACY [MONODEVELOP] SYTEMY OPERACYJNE CO PROGRAMOWAĆ ? JĘZYKI PRZYKŁADOWY.
Wzorce projektowe w J2EE
SZPIF – Harmonogram, Opis narzędzi, Schemat bazy danych
C# Windows Forms Zastosowania Informatyki Wykład 2
SIEĆ P2P 1. Definicja sieci równouprawnionej. To taka sieć, która składa się z komputerów o takim samym priorytecie ważności, a każdy z nich może pełnić.
Wstęp do programowania urządzeń z systemem. Windows Phone 7
.NET gdzie szukać? .NET co warto wiedzieć?
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Rozwój aplikacji przy wykorzystaniu ASP.NET
Witold Bołt Wprowadzenie do .NET Witold Bołt
Instytut Tele- i Radiotechniczny WARSZAWA
Interfejsy urządzeń peryferyjnych
Wirtualna baza SQL zgodna z SQL Server SQL as a Service
Microsoft Expression Studio
Opracował : Przemysław Drzymała
Dr hab. Dariusz Piwczyński Katedra Genetyki i Podstaw Hodowli Zwierząt
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Przygotował: Paweł Ziaja
Systemy operacyjne.
Programowanie obiektowe – zastosowanie języka Java SE
Wykonał: Michał Nikołajuk
XML – eXtensible Markup Language
Narzędzia administracyjne
Maszyna wirtualna ang. virtual machine, VM.
Wybrane zagadnienia relacyjnych baz danych
Systemy zarządzania treścią Wykład 5
Etapy uruchamiania systemu Pliki konfiguracyjne
Wstęp do ASP.NET Arkadiusz Popa Serwery Aplikacji
Podstawy programowania
Telefony Świata.
Procesor, pamięć, przerwania, WE/WY, …
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
System operacyjny Windows
Technologie internetowe i mobilne
Podstawy języka skryptów
Programowanie w językach skryptowych
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Obiekty COM Przemysław Buczkowski. Plan prezentacji 1.Wprowadzenie do COM 2.Historia standardu 3.Jak działa COM 4.Interface IUknown 5.Paradygmaty COM.
Platforma .Net.
Podstawy programowania
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
OS/2 Justyna Pabisek.
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe – zastosowanie języka Java SE
Windows Workflow Foundation
Aplikacje i usługi internetowe
Podstawy programowania
NEMERLE Michał Maliszewski.
Zapis prezentacji:

Programowanie urządzeń mobilnych Paweł Fiderek 2011

Wykład 3 – Windows Mobile wprowadzenie Historia systemu Pochodzenie Rozwój kolejnych wersji Wprowadzenie Podstawowe elementy GUI Wprowadzenie do programowania urządzeń z systemem Windows Mobile PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Windows CE – system operacyjny opracowany przez Microsoft jako system dla urządzeń przenośnych typu PDA (np.: Pocket PC lub Palm) lub jako system wbudowany. Wersja 1.0 była bardziej rozbudowanym organizerem niż systemem operacyjnym (z punktu widzenia użytkownika.) Windows CE jest zoptymalizowany dla urządzeń o minimalnej pamięci – jądro Windows CE może być uruchomione nawet w 1 MB pamięci. System nie wymaga do pracy dysku twardego, może być więc „system zamkniętym”, i być umieszczony w pamięci ROM. Obsługuje 256 priorytetów wykonywania i korzysta z dziedziczenia priorytetów w razie, przydatnych w sytuacji inwersji priorytetów. Podstawową jednostką wykonywania jest wątek, co umożliwia prostsze zarządzanie procesami. Windows CE używany jest także w komputerach pokładowych samochodów wraz z systemem rozpoznawania mowy mającym zapewnić bezdotykową obsługę systemu operacyjnego. PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Windows CE 1.x specyfikacja urządzeń na których system miał pracować : Wymiary nie większe niż 18x10x2.5 cm Zasilanie z dwóch baterii AA Waga mniejsza niż 500 g Klawiatura QWERTY zawierająca klawisze takie jak SHIFT, CTRL i ALT Dotykowy wyświetlacz LCD o rozdzielczości 480x240 pikseli w 4 odcieniach szarości Minimum 4 MB pamięci ROM Minimum 2 MB pamięci RAM Port podczerwieni Port COM zgodny z RS-232 Slot PC Card (PCMCIA) Wbudowana obsługa dźwięku Procesor SuperH 3, MIPS 3000 lub MIPS 4000 Microsoft nie wypowiedział się jednoznacznie co oznacza skrót CE, lecz twierdzi, że taka nazwa nie była celowa. Oświadczył jednak, że CE wyrażać może w sobie wiele koncepcji, takich jak Compact (ang. Kompaktowy), Connectable (ang. Łącznościowy), Compatible (ang. Kompatybilny). Najczęściej jednak nazwę tłumaczy się jako "Compact Edition" lub "Consumer Electronics". PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Wygląd GUI systemu Windows CE 1.0 Źródło: Internet. PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Wersje systemu 1 Windows CE 1.x 2 Windows CE HandheldPC 2.x 3 Windows CE 2.11 - Palm-Size PC 1.1 4 Windows CE 2.11 - Palm-Size PC 1.2 5 Windows CE HandeldPC 2.11 - HandheldPC Professional 6 Windows CE HandeldPC 3.x - HandheldPC 2000 7 Windows CE .net (4.x) 8 Windows CE 5.0 9 Windows CE 6.0 10 Windows Mobile (i ten system również posiada kilka wersji.) Od wersji 4.0 z systemem zintegrowano .NET Compact Framework. Windows CE 6.0 powstał we wrześniu 2006 roku. Nazwa kodowa "Yamazaki". M.in. zwiększono przestrzeń adresową procesu z 32 MB do 1 GB i umożliwiono uruchomienie 32 768 procesów (w porównaniu z 32 w wersji 5.0). PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Microsoft Windows Mobile Microsoft Windows Mobile to 32-bitowy system operacyjny przeznaczony dla urządzeń typu Pocket PC oraz Smartphone. Windows Mobile nie jest zupełnie osobnym systemem, lecz rozszerzeniem Windows CE o dodatkową funkcjonalność, API (ang. Application Programming Interface) oraz Shell. Dostępne wersje Systemu: Windows Mobile 2003 Windows Mobile 2003SE Windows Mobile 5.0 Windows Mobile 6.0 (64 MB RAM, wyświetlacz 3,5 cala) Windows Mobile 6.1 Classic Istnieją wersje przeznaczone dla PocketPC z wbudowanym modułem GSM: Windows Mobile 2003 Premium Phone edition Windows Mobile 2003SE Phone edition Windows Mobile 5.0 (Magneto) Phone edition Windows Mobile 6.0 Phone edition Windows Mobile 6.1 Professional Windows Mobile 6.5 Professional Windows Mobile 6.5.1 Professional (w trakcie rozwoju) Windows Mobile 7 Professional (w trakcie rozwoju) PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Istnieją również wersje dla smartphone obsługujące ekrany 176x220 oraz 240x320 bez ekranu dotykowego: Smartphone 2002 Windows Mobile 2003 for Smartphone Windows Mobile 2003SE for Smartphone Windows Mobile 5.0 for Smartphone Windows Mobile 6.0 for Smartphone Windows Mobile 6.1 Standard Wygląd GUI systemu Windows Mobile 5.0 Źródło: Internet. PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek .NET Compact Framework Platforma umożliwiająca uruchamiane aplikacji napisanych w językach rodziny .NET, bedaca swego rodzaju maszyną wirtualną (jak np. JVM). Zatem można powiedzieć, że .Net Framework to maszyna wirtualna udostępniająca biblioteki, odpowiedzialne za nisko-poziomową interakcję z systemem operacyjnym, językom zarządzanym (ang. managed) wysokiego poziomu, np. C#. Kod napisany w C# czy J# jest najpierw kompilowany do pośredniego języka MSIL (Microsoft Intermediate Language). Wynikiem tego działania jest moduł zawierający instrukcje MSIL. Jedną z przyczyn zastosowania MSIL jest mozliwość wykorzystywania wielu języków programowania (VB, C#, J#, JScript, i Visual C++), skąd pojawia się konieczność pośredniej kompilacji kodu do MSIL. Następnie, moduł ten zamieniany jest na natywne instrukcje danego systemu operacyjnego CLR (ang. Common Language Runtime). Zatem .Net Framework postrzegać powinno się bardziej, jako platformę wielojęzykową, a nie jak maszynę wirtualną (jak np. maszyna wirtualna Javy) – wieloplatformową. Przeprowadzane są obecnie prace nad rozszerzeniem owych pięciu wspieranych języków programowania do ponad dwudziestu pięciu . PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Architektura .NET Compact Framework Źródło: Internet PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Common Language Runtime – wspólne środowisko uruchomieniowe. Jego podstawowym zadaniem jest zlokalizowanie, wczytywanie oraz zarządzanie typami .NET w imieniu użytkownika. CLR zajmuje się niskim poziomem pracy aplikacji np.: automatyczne zarządzanie pamięcią, integracją językową oraz ułatwianie wdrożenia ( i wsparcie dla różnego rodzaju wersji ) bibliotek kodu binarnego. CLR składa się z dwóch zasadniczych elementów: Runtime execution engine - mechanizm wykonawczy środowiska uruchomieniowego – mscoree.dll. Kiedy pakiet ( assembly ) jest wywoływany, automatycznie wczytywany jest mscoree.dll, który z kolei wczytuje do pamięci potrzebny pakiet. Mechanizm uruchomieniowy jest odpowiedzialny za wykonanie szeregu zadań. Pierwszym i najważniejszym jest określenie położenia pakietu i znalezienie wymaganego typu ( np. klasy, interfejsu, struktury itp. ) w kodzie binarnym przez odczytanie dostarczonych metadanych. Mechanizm wykonawczy kompiluje zasocjowany IL ( Intermediate Language ) do instrukcji specyficznych dla danej platformy. Biblioteka klas podstawowych. Składa się z kilku oddzielnych pakietów, najważniejszym jest mscorlib.dll. Zawiera dużą liczbę podstawowych typów, które hermetyzują dużą różnorodność najczęściej spotykanych zadań programistycznych. Każde rozwiązanie oparte na platformie .NET, zawsze wykorzystuje się ten pakiet i czasem kilka innych .NET ( zarówno oferowanych przez system jak i przygotowanych przez użytkownika ). Common Language Specification – specyfikacja wspólnego języka. Jest zbiorem zasad definiujących podzbiór wspólnych typów (dla różnych języków), który daje pewność, że kod binarny .NET może zostać bez klejenia wykorzystany przez wszystkie języki współpracujące na platformie .NET. PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Common Type System – zbiór wbudowanych podstawowych i wspólnych typów. Zawiera pełny opis wszystkich możliwych typów danych, obsługiwanych przez środowisko uruchomieniowe. Zawiera także informacje, o tym, jakie interakcje mogą zachodzić między nimi, oraz określa szczegóły ich reprezentacji w formie metadanych .NET. Managed Code - Kompilatory zgodne z CLR zamieniają kod źródłowy aplikacji na kod wykonywalny, zapisany w standardowym języku pośrednim MSIL, oraz na metadane — informacje na temat kodu wykonywalnego oraz danych wykorzystywanych przez ten kod. Platforma .NET umożliwia pisanie aplikacji w wielu językach, ale dzięki MC kompilator zamienia wszystkie operacje na typach danych, to jest klasach, strukturach, liczbach całkowitych, łańcuchach znaków — na język MSIL i metadane. W czasie wykonywania aplikacji, CLR tłumaczy kod MSIL na kod maszynowy (natywny) procesora, na którym wykonywana jest aplikacja. Taka konwersja kodu z MSIL na kod maszynowy daje możliwość zarządzania wykonywaniem aplikacji, co pozwala uniknąć wielu problemów — stąd nazwa ”kod zarządzany”. Garbage Collection – .NET Compact Framework zapewnia zwalnianie wszystkich zasobów, z jakich korzysta aplikacja, po jej zakończeniu. W tym celu wykorzystywany jest mechanizm o nazwie Garbate Collection. Compact Framework decyduje kiedy powinien zostać uruchomiony proces Garbage Collection. Może on zostać uruchomiony w pojedynczej domenie aplikacji bądź też we wszystkich dostępnych. Pozwala to zapobiegać sytuacją, gdy jedna aplikacja zużywa zbyt dużo pamięci w porównaniu z innymi. PUM wykład 3 Paweł Fiderek

Podstawy działania Garbage collection Garbage collection (zbieranie nieużytków) to architektura zarządzania pamięcią, w której proces zwalniania nieużywanych jej obszarów odbywa się automatycznie. Mechanizm taki stosuje się na przykład w wysokopoziomowych językach programowania, przy czym za jego obsługę nie odpowiada sam język, lecz wirtualna maszyna. Garbage collection zostało wymyślone przez Johna McCarthy'ego około roku 1959 do rozwiązania problemu ręcznego zarządzania pamięcią w Lispie. Był to pierwszy język obsługujący ten mechanizm. Przykładowymi językami obsługującymi ten mechanizm są Smalltalk, Python, Ruby, Java, C#. Istnieje co najmniej kilka metod pracy GC. Liczenie odnośników (reference counting) W tej metodzie każda jednostka zarezerwowanej pamięci ma licznik, w którym jest zapisana liczba odwołań do tej jednostki. Za każdym razem, kiedy dodajemy odwołanie, zwiększamy licznik we wskazywanej jednostce, a kiedy odwołanie usuwamy, zmniejszamy licznik. Jeśli wartość licznika osiągnęła zero, to usuwamy wszystkie odnośniki wychodzące z tego obszaru pamięci i zwalniamy go. Metoda ta nie gwarantuje zwolnienia wszystkich niepotrzebnych obszarów w sytuacji, gdy występują tzw. wzajemne (cykliczne) odwołania. Przykładowo, jeśli X zawiera wskaźnik na Y, a Y zawiera wskaźnik na X (np. są to dwa komunikujące się ze sobą obiekty), licznik w żadnym z nich nigdy nie osiągnie zera. PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek W liczeniu odnośników dodatkowe obliczenia związane z pracą kolektora nieużytków są rozłożone w czasie, gdyż wszystkie operacje muszą dbać o liczniki, co może skutkować znacznie mniejszym - lub też przeciwnie - znacznie większym, obciążeniem w porównaniu z innymi metodami. Mark and Sweep. W tej metodzie każda jednostka pamięci zawiera pojedynczy bit, który jest na początku czysty. Kiedy maszyna wirtualna przechodzi w fazę "garbage collection", zaczyna sprawdzać obiekty, o których wie, że istnieją do nich odwołania, zaznacza w nich ten bit i rekursywnie przechodzi przez wszystkie komórki przez nie wskazywane. Kiedy już wszystko zostało oznaczone, komórki bez znacznika są zwalniane, bo na pewno nic na nie nie wskazuje, po czym znacznik jest czyszczony wszystkim komórkom. Mark and Sweep jest obecnie najpopularniejszą metodą. Garbage collection przez kopiowanie Ta metoda polega na tym, że wszystko zostaje rekursywnie przekopiowane do innego obszaru w pamięci - najpierw kopiowany jest początkowy zestaw danych, potem wszystko co było przez niego wskazywane, itd. Na końcu zwalniamy początkową pamięć. W ten sposób „przez odsiew” usuwane zostają elementy, na które nic nie wskazuje. I w ten sposób oszczędza się na konieczności ustawiania bitów w "mark and sweep", dodatkowo, regularnie defragmentuje się pamięć. Problemy jakie mogą wystąpić to konieczność poniesienia kosztu kopiowania oraz konieczność posiadania dużej ilości wolnej pamięci. Ten sposób byłby bardziej praktyczny na systemach, na których możliwa jest tymczasowa alokacja dużej ilości pamięci. PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Class Library Support   Klasy są zorganizowane hierarchicznie wewnątrz przestrzeni nazw ( namespace ). .NET Compact Framework współdzieli około 2/3 klas z pełną wersją .NET Framework. Mimo to występują pomiędzy nimi pewne istotne różnice, i trzeba być tego świadom podczas tworzenia aplikacji z wykorzystaniem .NET Compact Framework. Klasy współdzielone: .NET Compact Framework dostarcza szeroki podzbiór klas i metod do budowania aplikacji, które są później uruchamiane na urządzeniach z ograniczonymi zasobami. Wszystkie te klasy są semantycznie kompatybilne z klasami o tych samych nazwach w .NET Framework. .NET Compact Framework posiada wsparcie dla istotnych elementów takich jak: ·         Usługi sieci Web oparte na XML ·         Zarządzanie relacyjnymi danymi ·         Rozbudowana funkcjonalność XML ·         Rozbudowane klasy do rysowania, takie jak Image Controls ·         Potężne możliwości budowania interfejsu użytkownika. .NET Compact Framework nie wspiera klas ASP .NET. PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Dalsze różnice ·         - COM Interop – nie wspierane, należy wykonywać funkcje DLL, które wywołują obiekty COM - Data – podzbiór implementacji ADO .NET oraz SQL Server CE - ASP .NET – nie wspierany. Należy używać ASP .NET Mobile Web Controls do tworzenia stron sieci WWW dla urządzeń przenośnych - XML – ze względu na rozmiar brak obsługi walidacji XML schema lub zapytań XPath w dokumentach XML. - Aby zmniejszyć rozmiary środowiska zrezygnowano z wielu przeładowanych metod - Brak niektórych kontrolek ( np. wsparcia dla drukowania ) - Ze względu na wydajność brak klas BinaryFormatter i SoapFormatter - Bezpieczeństwo – brak zabezpieczenia dostępu do kodu niezarządzanego. Dowolna aplikacja może wywołać dowolny system lub nie systemowe API. Brak systemu bezpieczeństwa opartego na rolach PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek ·         - COM Interop – nie wspierane, należy wykonywać funkcje DLL, które wywołują obiekty COM - Data – podzbiór implementacji ADO .NET oraz SQL Server CE - ASP .NET – nie wspierany. Należy używać ASP .NET Mobile Web Controls do tworzenia stron sieci WWW dla urządzeń przenośnych - XML – ze względu na rozmiar brak obsługi walidacji XML schema lub zapytań XPath w dokumentach XML. - Aby zmniejszyć rozmiary środowiska zrezygnowano z wielu przeładowanych metod - Brak niektórych kontrolek ( np. wsparcia dla drukowania ) - Ze względu na wydajność brak klas BinaryFormatter i SoapFormatter - Bezpieczeństwo – brak zabezpieczenia dostępu do kodu niezarządzanego. Dowolna aplikacja może wywołać dowolny system lub nie systemowe API. Brak systemu bezpieczeństwa opartego na rolach PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek MMIT dostarcza wszelkich korzyści projektowania aplikacji z pomocą ASP .NET. Ponadto MMIT posiada następujące udogodnienia: - Wsparcie dla szerokiej gamy urządzeń. Pozwala na używanie ASP .NET na wielu urządzeniach mobilnych, począwszy na telefonach komórkowych, skończywszy na urządzeniach Pocket PC. - Strony WWW stworzone z wykorzystaniem MMIT są tak samo prezentowane na wszystkich wspieranych urządzeniach, nie trzeba jej dostosowywać do poszczególnych urządzeń. Można tworzyć złożoną aplikację wykorzystując zbiór mobilnych kontrolek serwerowych bez żadnej wiedzy na temat WML-a lub innych podobnych języków. Środowisko uruchomieniowe bierze na siebie odpowiedzialność za różnice w implementacjach pomiędzy różnymi przeglądarkami, urządzeniami i bramkami sieciowymi. - Możliwość personalizacji i rozszerzania funkcjonalności. MMIT dostarcza takie same możliwości personalizacji i rozszerzalności jak ASP .NET. W dodatku narzędzie pozwala na dodawanie obsługi nowych urządzeń, bez konieczności jakiejkolwiek zmiany w kodzie aplikacji. Dzięki temu można mieć pewność, że aplikacja stworzona dzisiaj będzie w przyszłości działała na nowej generacji urządzeń. PUM wykład 3 Paweł Fiderek

Możliwości programistyczne w Windows Mobile 5.0 Windows Mobile 5.0 zapewnia programistom nowe, liczne interfejsy programistyczne. Dzięki nim, programista może się skupić na konkretnych celach aplikacji, a nie sposobach ich realizacji. Elementy wspomaganie przez interfejsy to np.: rysowanie 2D i 3D, dostarczają nowych możliwości komunikacyjnych oraz ułatwiają obsługę elementów sprzętowych takich jak kamera czy też system nawigacji satelitarnej. Inne usprawnienia to m. in. : Nowe interfejsy API dostarczają wielu nowych możliwości np.: zarządzanie obrazami, kontaktami, Większa przenośność kodu i aplikacji pomiędzy urządzeniami Pocket PC a Smartphone. Nowe API do śledzenia aktywności systemu takich jak: zmiany w połączeniu z siecią, odbiór wiadomości SMS lub nadejście połączenia telefonicznego; Rozbudowane narzędzia do testowania aplikacji w zależności od orientacji ekranu, rozdzielczości czy też rodzaju urządzenia – przyspieszają tworzenie aplikacji w Visual Studio. API do obsługi wbudowanego aparatu. Windows Media Player 10 Mobile pozwala na łatwa dołączenie multimediów do tworzonej aplikacji (np. wbudowanie odtwarzacza multimedialnego). Obsługa Direct3D dostarcza możliwości tworzenia aplikacji trójwymiarowych. Obsługa DirectDraw zapewnia większą kontrolę i elastyczność w aplikacjach 2D. PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Windows Mobile 5.0 posiada zainstalowane domyślnie w pamięci ROM środowisko .NET Compact Framework 1.0 wraz z SP3. Możemy wyróżnić trzy rodzaje API: - Nowo dodane API kierowane do programistów tworzących aplikacje w kodzie natywnym; - Istniejące wcześniej natywne API, ale teraz dodatkowo dostępne dla programistów kodu zarządzanego; - Nowo dodane API dostępne zarówno dla programistów kodu natywnego jak i zarządzanego.   PUM wykład 3 Paweł Fiderek

Programowanie GUI w Windows Mobile PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Check Box cb = new CheckBox(); cb.Content = "CheckBox"; spanel2.Children.Add(cb); <Style x:Key="Properties" TargetType="{x:Type CheckBox}"> <Setter Property = "Background" Value= "Purple"/> <Setter Property = "Foreground" Value= "Green"/> <Setter Property = "BorderBrush" Value= "Black"/> <Setter Property = "BorderThickness" Value= "5"/> </Style> PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Combo Box this.comboBox1 = new System.Windows.Forms.ComboBox(); AddItemsCore Contains OnDoubleClick RefreshItems PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Command Button Pocket PC Smartphone btncsharp = new Button(); btncsharp.Content = "Created with C# code."; btncsharp.Background = SystemColors.ControlDarkDarkBrush; btncsharp.FontSize = SystemFonts.CaptionFontSize; cv2.Children.Add(btncsharp); <Style x:Key="Triggers" TargetType="Button"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="true"> <Setter Property = "Background" Value="Red"/> </Trigger> <Trigger Property="IsPressed" Value="true"> <Setter Property = "Foreground" Value="Green"/> </Trigger> </Style.Triggers> </Style> PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Context Menu ContextMenu mnuContextMenu = new ContextMenu(); this.ContextMenu = mnuContextMenu; MenuItem mnuItemNew = new MenuItem(); MenuItem mnuItemOpen = new MenuItem(); mnuItemNew.Text = "&New"; mnuItemOpen.Text = "&Open"; mnuContextMenu.MenuItems.Add(mnuItemNew); mnuContextMenu.MenuItems.Add(mnuItemOpen); PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Date Picker Pocket PC Smartphone public void CreateMyDateTimePicker() { // Create a new DateTimePicker control and initialize it. DateTimePicker dateTimePicker1 = new DateTimePicker(); // Set the MinDate and MaxDate. dateTimePicker1.MinDate = new DateTime(1985, 6, 20); dateTimePicker1.MaxDate = DateTime.Today; // Set the CustomFormat string. dateTimePicker1.CustomFormat = "MMMM dd, yyyy - dddd"; dateTimePicker1.Format = DateTimePickerFormat.Custom; //Show the CheckBox and display the control //as an up-down control. dateTimePicker1.ShowCheckBox = true; dateTimePicker1.ShowUpDown = true; } PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Hyperlink HyperLink link = (HyperLink) e.Item.FindControl("viewDetails"); PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek List Box private void button1_Click(object sender, System.EventArgs e) { // Create an instance of the ListBox. ListBox listBox1 = new ListBox(); // Set the size and location of the ListBox. listBox1.Size = new System.Drawing.Size(200, 100); listBox1.Location = new System.Drawing.Point(10,10); // Add the ListBox to the form. this.Controls.Add(listBox1); // Set the ListBox to display items in multiple columns. listBox1.MultiColumn = true; // Set the selection mode to multiple and extended. listBox1.SelectionMode = SelectionMode.MultiExtended; // Shutdown the painting of the ListBox as items are added. listBox1.BeginUpdate(); // Loop through and add 50 items to the ListBox. for (int x = 1; x <= 50; x++) { listBox1.Items.Add("Item " + x.ToString()); } // Allow the ListBox to repaint and display the new items. listBox1.EndUpdate(); // Select three items from the ListBox. listBox1.SetSelected(1, true); listBox1.SetSelected(3, true); listBox1.SetSelected(5, true); // Display the second selected item in the ListBox to the console. System.Diagnostics.Debug.WriteLine(listBox1.SelectedItems[1].ToString()); // Display the index of the first selected item in the ListBox. System.Diagnostics.Debug.WriteLine(listBox1.SelectedIndices[0].ToString()); } PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek List View ListViewItem listViewItem1 = new ListViewItem(); ListViewSubItem listViewSubItem1 = new ListViewSubItem();   listViewItem1.Text = "Joe"; listViewSubItem1.Text = "123 Somewhere Street";   listViewItem1.SubItems.Add(listViewSubItem1); listView1.Items.Add(listViewItem1); ColumnHeader columnHeader1 = new ColumnHeader(); ColumnHeader columnHeader2 = new ColumnHeader() ; ColumnHeader columnHeader3 = new ColumnHeader();   columnHeader1.Text = "Name"; columnHeader2.Text = "Address"; columnHeader3.Text = "Telephone Number";   listView1.Columns.Add(columnHeader1); listView1.Columns.Add(columnHeader2); listView1.Columns.Add(columnHeader3); listView1.Groups.Add(new ListViewGroup("Friends", HorizontalAlignment.Left)); PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Option Button this.groupBox1 = new System.Windows.Forms.GroupBox(); this.radioButton2 = new System.Windows.Forms.RadioButton(); this.radioButton1 = new System.Windows.Forms.RadioButton(); this.getSelectedRB = new System.Windows.Forms.Button(); this.groupBox1.Controls.Add(this.radioButton2); this.groupBox1.Controls.Add(this.radioButton1); this.groupBox1.Controls.Add(this.getSelectedRB); this.groupBox1.Location = new System.Drawing.Point(30, 100); this.groupBox1.Size = new System.Drawing.Size(220, 125); this.groupBox1.Text = "Radio Buttons"; PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Progress Bar  this.progressBar1 = new System.Windows.Forms.ProgressBar(); progressBar1.Maximum = 10;             progressBar1.Location = new System.Drawing.Point(8, 312);             progressBar1.Minimum = 0;             progressBar1.TabIndex = 0;             progressBar1.Value = 0; PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Scroll Bar hscrollb = new ScrollBar(); hscrollb.Orientation = Orientation.Horizontal; spanel1.Children.Add(hscrollb); vscrollb = new ScrollBar(); vscrollb.Orientation = Orientation.Vertical; vscrollb.HorizontalAlignment = HorizontalAlignment.Left; vscrollb.Width = (20); vscrollb.Height = (80); Canvas.SetLeft(vscrollb, (50)); spanel1.Children.Add(vscrollb); PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Slider Slider hslider = new Slider(); hslider.Orientation = Orientation.Horizontal; hslider.AutoToolTipPlacement = AutoToolTipPlacement.TopLeft; hslider.AutoToolTipPrecision = 2; hslider.IsDirectionReversed = true; hslider.Width = 100; hslider.IsMoveToPointEnabled = false; hslider.SelectionStart = 1.1; hslider.SelectionEnd = 3; hslider.IsSelectionRangeEnabled = false; hslider.IsSnapToTickEnabled = false; hslider.TickFrequency = 3; hslider.TickPlacement = TickPlacement.Both; cv1.Children.Add(hslider); <Style x:Key="Triggers" TargetType="{x:Type Slider}"> <Style.Triggers> <Trigger Property="Slider.IsMouseOver" Value="True"> <Setter Property = "Background" Value="Green"/> <Setter Property = "IsSnapToTickEnabled" Value ="True"/> <Setter Property = "TickPlacement" Value ="TopLeft"/> <Setter Property = "TickFrequency" Value ="1"/> </Trigger> </Style.Triggers> </Style> PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Tab private void MyTabs() { this.tabControl1 = new TabControl(); // Invokes the TabPage() constructor to create the tabPage1. this.tabPage1 = new System.Windows.Forms.TabPage(); this.tabControl1.Controls.AddRange(new Control[] { this.tabPage1}); this.tabControl1.Location = new Point(25, 25); this.tabControl1.Size = new Size(250, 250); this.ClientSize = new Size(300, 300); this.Controls.AddRange(new Control[] { this.tabControl1}); } PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek Text Box private void CreateMyMultilineTextBox() { // Create an instance of a TextBox control. TextBox textBox1 = new TextBox(); // Set the Multiline property to true. textBox1.Multiline = true; // Add vertical scroll bars to the TextBox control. textBox1.ScrollBars = ScrollBars.Vertical; // Allow the RETURN key to be entered in the TextBox control. textBox1.AcceptsReturn = true; // Allow the TAB key to be entered in the TextBox control. textBox1.AcceptsTab = true; // Set WordWrap to True to allow text to wrap to the next line. textBox1.WordWrap = true; // Set the default text of the control. textBox1.Text = "Welcome!"; } PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek

PUM wykład 3 Paweł Fiderek