Programowanie w środowiskach graficznych -...

32
Programowanie w środowiskach graficznych Wykład 1 OS, Podstawy Windows API 1

Transcript of Programowanie w środowiskach graficznych -...

Page 1: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Programowanie w środowiskach graficznych Wykład 1 OS, Podstawy Windows API

1

Page 2: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

WSTĘP

2

Page 3: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

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

Page 4: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

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

Page 5: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

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

Page 6: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

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

Page 7: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

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

Page 8: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

SYSTEMY OPERACYJNE NA ŚWIECIE

KONTEKST:

8

Page 9: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Użycie „desktopowych” systemów operacyjnych na świecie

9 Data provided by > Net Applications, http://www.netmarketshare.com/

Page 10: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Użycie „desktopowych” systemów operacyjnych na świecie (styczeń 2016)

10 Data provided by > Net Applications, http://www.netmarketshare.com/

Page 11: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Użycie „mobilnych” i „tabletowych” systemów operacyjnych

11 Data provided by > Net Applications, http://www.netmarketshare.com/

styczeń 2016

styczeń 2015

Page 12: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Wizyty na witrynach www (OS)

12 http://www.w3counter.com/globalstats.php (31.01.2015)

Operating Systems 1 Windows 7 26.73% 2 iOS 9 13.74% 3 Android 4 11.70% 4 Android 5 8.18% 5 Windows 10 8.02% 6 Mac OS X 7.03% 7 Windows 8.1 6.24% 8 Windows XP 4.24% 9 iOS 8 3.17% 10 Linux 2.62%

Page 13: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Wizyty na witrynach www (przeglądarka)

13 http://www.w3counter.com/globalstats.php (31.01.2016)

Page 14: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Wizyty na witrynach www (trendy przeglądarek)

14 Data provided by > Net Applications, http://www.netmarketshare.com/

Page 15: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Wizyty na witrynach www (przeglądarka)

15 http://www.w3counter.com/globalstats.php (31.01.2016)

Screen Resolutions 1 1366x768 16.67%

2 360x640 9.40%

3 1920x1080 7.45%

4 768x1024 6.72%

5 1024x768 5.47%

6 375x667 5.02%

7 320x568 5.01%

8 1280x800 4.70%

9 1440x900 4.06%

10 1280x1024 3.92%

Page 16: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Popularność języków programowania (http://www.tiobe.com)

16

Page 17: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Wnioski Programujemy na „desktopa” – wybieramy Windows

(~90%); Programujemy „mobilnie” – wybieramy Androida

(otwarty, niejednorodny) lub iOS (hermetyczny); Programujemy „www” – uwzględniamy wiele

rozdzielczości i pamiętamy, że nie wszystkie technologie działają na różnych urządzeniach;

… Programujemy gry – wybieramy konkretną platformę

(Wii U, PlayStation 3/4, Xbox 360/One, PC, „mobilne”) lub tworzymy wieloplatformowo (np. Unity, JavaScript pod przeglądarkę).

17

Page 18: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Wersje MS Windows

18

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

Page 19: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

19

Page 20: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

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

20

Page 21: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

PODSTAWY WINDOWS API

21

Page 22: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

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.

22

Page 23: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

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.

23

Page 24: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Aplikacja a okna Aplikacja nie musi mieć żadnych okien,

ale zwykle ma jedno lub wiele okien. Aplikacja obsługująca pojedynczy

dokument to tzw. aplikacja SDI (Single Document Interface); np. Paint, Notatnik, a nawet obecnie MS Word.

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.

24

Page 25: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

25

Page 26: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Komunikaty Aplikacje Windows działają na zasadzie odpowiedzi na

zdarzenia generowane przez system i użytkownika. Są to komunikaty.

Komunikat to po prostu wywołanie funkcji. Komunikaty mają pewną określoną sygnaturę

(parametry), w miarę potrzeb. ◦ Przykład: komunikat mówiący o kliknięciu przyciskiem myszy na

kontrolce, zwykle zawiera: referencję na kontrolkę (object sender), oraz m.in. który przycisk kliknięto, ile razy, położenie myszy w oknie. To

wszystko upakowane w pojedynczym obiekcie (MouseEventArgs e).

Taki komunikat trafia do aplikacji zarządzającej kontrolką, na której kliknięto, a ona może na to odpowiednio zareagować (tzw. handler zdarzenia).

26

Page 27: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Obsługa komunikatów Aplikacja powinna obsługiwać

komunikaty wysłane jej przez okno (okna), m.in.: ◦ reagować na mysz i klawiaturę

użytkownika, np. wpisywać tekst w okienku; ◦ uaktualniać widoki, wykresy, itp.; ◦ otwierać, zapisywać i zamykać

dokumenty; ◦ zminimalizować, zmienić rozmiar czy

zamknąć okno (a może i samą aplikację).

27

Page 28: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

Typy komunikatów generowane przez SO generowane przez użytkownika generowane przez aplikację niestandardowe: utworzone i zarejestrowane

przez programistę (za pomocą RegisterWindowMessage())

28

Page 29: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

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).

29

Page 30: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

30

Page 31: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

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 2010, 2012 lub 2013)

Będziemy używać Windows Forms oraz VS w połączeniu z językiem C#.

31

Page 32: Programowanie w środowiskach graficznych - ii.uwb.edu.plii.uwb.edu.pl/~m.rybnik/wp-content/uploads/PwSG-W1pp-OS-Windows... · Treści przedmiotu 1. Charakterystyka programowania

32

„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!"; } } }