Programowanie w środowiskach graficznych Wykład 1 OS, Podstawy Windows API 1
WSTĘP 2
Cele wykładu Zaznajomić z podstawowymi mechanizmami programowania zdarzeniowego (w systemie operacyjnym Windows). Nauczyć wykorzystania funkcjonalności Windows API, biblioteki Windows Forms zawartej w.net Framework. Zaznajomić z ogólnymi zasadami projektowania i tworzenia graficznego interfejsu użytkownika z uwzględnieniem ergonomii oraz analizy potrzeb potencjalnych użytkowników. Używany do tego język: C# 3
Cele laboratorium Implementacja wybranych mechanizmów programowania w środowisku graficznym systemu Windows (przy użyciu języka C# w środowisku programistycznym Microsoft Visual Studio) Znajomość podstawowych mechanizmów wykorzystywanych podczas programowania w systemie Windows Umiejętność wykorzystania funkcjonalności Windows API, obudowanej w bibliotekę Windows Forms zawartą w.net Framework do tworzenia interfejsów użytkownika Znajomość ogólnych zasad projektowania graficznego interfejsu użytkownika z uwzględnieniem ergonomii oraz analizy potrzeb potencjalnych użytkowników 4
Treści przedmiotu 1. Charakterystyka programowania obiektowego w języku C#. 2. Podstawy graficznego interfejsu użytkownika. Ogólne zasady tworzenia graficznego interfejsu użytkownika. Urządzenia wejściowe i wyjściowe. 3. Podstawowe informacje na temat Windows API: okna, komunikaty, struktury danych, obsługa myszy i klawiatury. Standardowe kontrolki Windows, etykiety, menu, menu kontekstowe, paski narzędzi, paski statusu, paski podziału. 4. Tworzenie aplikacji z użyciem Windows Forms: podstawowe informacje aplikacja, formularze, zdarzenia, okna dialogowe. Kontrolki dostępne w Windows Forms. GDI a GDI+. Używanie GDI+: pióra, pędzle, rysunki, praca z tekstem, praca z informacją obrazową, transformacje graficzne. Prezentacja i edycja informacji ze źródeł tabelarycznych: DataGrid, ListBox, DataGridView. 5. Okna dialogowe: modalne, niemodalne, standardowe. Komunikacja między oknami. 6. Wybrane mechanizmy systemu operacyjnego Windows: schowek, rejestr, pamięć, procesy i wątki, biblioteki DLL, COM, ActiveX. 7. Lokalizacja i regionalizacja: tworzenie wielojęzycznych GUI. 5
Literatura: 1. Lars Powers, Mike Snell - Microsoft Visual Studio 2008. Ksiega eksperta. Helion, 2009. 2. Andrew Thoelsen - Jezyk C# i platforma.net. Wydawnictwo Naukowe PWN, 2008. 3. John Sharp, Jon Jagger - Microsoft Visual C#.NET. Wydawnictwo RM, 2002. 4. Allen Jones - C# Księga przykładów. Wydawnictwo Promise, 2005. 5. Jose Mojica - C# i ASP.net. Szybki start. Helion, 2004. 6. Joe Mayo - C# 3.0 dla.net 3.5 Księga eksperta. Helion, 2010. 6
Zaliczenie Laboratorium: zaliczenie na ocenę, na które składają się oceny z kolokwium zaliczeniowego oraz samodzielnej pracy na zajęciach. Wykład: kolokwium zaliczeniowe. 7
KONTEKST: SYSTEMY OPERACYJNE NA ŚWIECIE 8
Użycie desktopowych systemów operacyjnych na świecie Data provided by > Net Applications, http://www.netmarketshare.com/ 9
Użycie desktopowych systemów operacyjnych na świecie Data provided by > Net Applications, http://www.netmarketshare.com/ 10
Użycie mobilnych i tabletowych systemów operacyjnych na świecie Data provided by > Net Applications, http://www.netmarketshare.com/ 11
Wizyty na witrynach www (OS) Operating Systems 1 Windows 7 40.49% 2 Android 4 12.28% 3 Windows 8.1 8.54% 4 Windows XP 7.73% 5 ios 8 7.39% 6 Mac OS X 6.25% 7 ios 7 3.77% 8 Windows 8 2.61% 9 Linux 2.43% 10 Windows Vista 2.13% http://www.w3counter.com/globalstats.php (31.01.2015) 12
Wizyty na witrynach www (rozdzielczości) Data provided by > Net Applications, http://www.netmarketshare.com/ 13
Popularność języków programowania (http://www.tiobe.com) 14
Popularność języków programowania (http://www.tiobe.com) 15
Wnioski Programujemy na desktopa wybieramy Windows (~92%); Programujemy mobilnie wybieramy Androida (otwarty, niejednorodny) lub ios (hermetyczny); Programujemy www musimy myśleć o wielu rozdzielczościach; Programujemy gry wybieramy konkretną platformę (Wii U, PlayStation 3/4, Xbox 360/One, PC, mobilne ) lub tworzymy wieloplatformowo (np. Unity, Javascript). 16
Wersje MS Windows http://commons.wikimedia.org/wiki/file%3awindows_updated_family_tree.png By Kristiyan Bogdanov [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons from Wikimedia Commons 17
18
Narzędzia programistyczne dla Windows (wybrane) Windows API Win16 - do Windows 3.1 Win32s - Windows 3.1 Win32 - od Windows 95 i wszystkie wersje NT Visual Basic Visual C++ MFC (Microsoft Foundation Class Library) WTL (Windows Template Library) Visual J++.NET Windows Forms (.NET Framework 1.0+) m.in. język C# Windows Presentation Foundation (.NET Framework 3.0+) Delphi Builder C++ Borland Developer Studio Qt GTK+ wxwidgets 19
PODSTAWY WINDOWS API 20
Windows API Windows Application Programming Interface (API) to uniwersalny zestaw funkcji, które umożliwiają aplikacjom (uruchomionym programom) współpracę z SO Windows. API pojawiło się w zamierzchłym Windows. 3.1, ale jest rozwijane w kolejnych wersjach Windows. Jest wstecznie kompatybilne. Korzystanie z Windows API jest możliwe z wielu języków programowania (potrzebna jest tylko obsługa DLL), m.in. C, C++, C#, Visual Basic, Object Pascal, a nawet asembler. 21
Kategorie funkcji API Zarządzanie, administracja, serwisowanie, konfigurowanie SO Monitoring wydajności SO Grafika 2D i 3D oraz media Usługi sieciowe Bezpieczeństwo (np. kryptografia, autoryzacja, uwierzytelnianie) Obsługa pamięci, plików, peryferiów, procesów i wątków Tworzenie i zarządzanie oknami. 22
Aplikacja a okna Aplikacja nie musi mieć żadnych okien, ale może też mieć jedno lub wiele okien. Aplikacja obsługująca pojedynczy dokument to tzw. aplikacja SDI (Single Document Interface); np. Paint, Notatnik. Aplikacja obsługująca i wyświetlająca wiele podobnych dokumentów to tzw. aplikacja MDI (Multiple Document Interface); np. przeglądarki www, zaawansowane programy graficzne. 23
24
25 Co to jest programowanie zdarzeniowe? Jak powinna wyglądać aplikacja okienkowa? Krok pierwszy tworzenie interfejsu użytkownika (wizualne lub w kodzie).
Co to jest programowanie zdarzeniowe? Jak powinna wyglądać aplikacja okienkowa? Krok drugi obsługa zdarzeń. (chcemy, aby akcja użytkownika spowodowała wykonanie naszego kodu) void Oblicz(...) {......... } 26
Co to jest programowanie zdarzeniowe? Jak powinna wyglądać aplikacja okienkowa? Krok trzeci interakcja z kontrolkami. (chcemy odczytać wprowadzone przez użytkownika dane, wykonać obliczenia i wyświetlić wynik) void Oblicz(...) {......... } 27
Komunikaty Aplikacje Windows działają na zasadzie odpowiedzi na zdarzenia generowane przez system i użytkownika. Komunikat to wywołanie określonej funkcji. Komunikaty mają pewną określoną sygnaturę, aby dało się łatwo odróżnić różne komunikaty. Np. komunikat mówiący o kliknięciu przyciskiem myszy na jakimś oknie, będzie zawierał: identyfikator okna, oraz m.in. który przycisk kliknięto, ile razy, położenie myszy w oknie (to wszystko upakowane w pojedynczym obiekcie klasy MouseEventArgs). Umożliwia to przesłanie komunikatu do aplikacji zarządzającej oknem, na którym kliknięto, a ona powinna na to odpowiednio zareagować. 28
Obsługa komunikatów Aplikacja powinna obsługiwać komunikaty wysłane przez jej okna, np. uaktualniać widok, wpisywać tekst w okienku, otwierać dokumenty, zminimalizować czy zamknąć okno (a może i samą aplikację). 29
Typy komunikatów generowane przez SO generowane przez użytkownika generowane przez aplikację niestandardowe: utworzone i zarejestrowane przez programistę (za pomocą RegisterWindowMessage()) 30
Pętla komunikatów Komunikaty obsługiwane są w kolejce FIFO danej aplikacji. Program odczytuje kolejno komunikaty i je obsługuje. Programistycznie jest to pętla, w której następują: odczyt kolejnego komunikatu (GetMessage), przetwarzanie (TranslateMessage), oraz przesłanie do obsługi (DispatchMessage). 31
32
Windows Forms Windows Forms to obiektowa nakładka (biblioteka) na Windows API, która wybitnie ułatwia z niej korzystanie. Windows Forms jest częścią platformy.net (wielojęzyczna i wielośrodowiskowa) Do programowania będziemy używać IDE Microsoft Visual Studio (wersje 2008, 2010, 2012 lub 2013) Będziemy używać Windows Forms oraz VS w połączeniu z językiem C#. 33
Hello World w Windows Forms using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.text = "Hello world!"; } } } 34