Tworzenie graficznego interfejsu użytkownika (GUI)

Slides:



Advertisements
Podobne prezentacje
Programowanie Windows
Advertisements

Jarosław Kuchta Komunikaty w Windows.
PSZ wykład 2 > Przegląd komponentów biblioteki VCL
Support.ebsco.com Tworzenie alertów dotyczących czasopism Przewodnik.
Support.ebsco.com Tworzenie alertów dotyczących wyszukiwania Przewodnik.
SO – LAB3 Wojciech Pieprzyca
Język ANSI C Operacje we/wy
WINDOWS 95 WYCINEK AUTOSTART TWORZENIE POWIĄZAŃ PLIKÓW Z APLIKACJAMI
Przegląd ważniejszych bibliotek używanych przy projekcie Quall.
Visual C++ Zastosowania Informatyki Wykład 6 Copyright, 2003 © Adam Czajka.
C# Windows Forms Zastosowania Informatyki Wykład 3
C# Windows Forms Zastosowania Informatyki Wykład 2
Opracowała: Iwona Kowalik
Programowanie w Środowisku Windows
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Programowanie w Środowisku Windows Common controls.
LabVIEW Technologie informacyjne – laboratorium Irmina Kwiatkowska
Temat: Eksplorator Windows - wędrówka po drzewie folderów
Programowanie w Środowisku Windows
Tadeusz Ziębakowski Zachodniopomorski Uniwersytet Technologiczny.
Podstawy programowania II
A. Jędryczkowski - marzec 2005 r. ©
Podstawy WINAPI - MessageBOX
Wprowadzenie do obsługi programu PowerPoint
TWOJA STRONA WWW NA VGH.PL MINIPORADNIK.
Prezentacja i szkolenie
System raportowania, ewaluacji oraz badania satysfakcji Klienta.
Konfiguracja systemu Windows
Programowanie Windows na przykładzie C# część 1
Programowanie w Środowisku Windows
MAKRA 1.
Wzorce slajdów, animacje, różne orientacje slajdów
Programowanie komponentowe jesień-zima 2013
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Tworzenie komiksu MS PowerPoint Beata Sanakiewicz.
MICROSOFT Access TWORZENIE MAKR
Okienkowy system operacyjny
Projektowanie stron WWW
Aplikacje internetowe
Aplikacje internetowe Grafika na stronach WWW ciąg dalszy Atrybuty znacznika body.
Aplikacje internetowe
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Systemy operacyjne Wykład 3a Działanie aplikacji okienkowej dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki
Oprogramowanie komponentowe w środowisku Microsoft Katarzyna Kuźniar 4 FDA, C1.
Tworzenie graficznego interfejsu użytkownika (GUI)
XHTML Tworzenie stylów CSS Damian Urbańczyk. Zewnętrzny plik CSS Aby ułatwić sobie pracę ze stylami, najlepiej utworzyć osobny plik, w którym będą przechowywane.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Opracowanie mgr Karol Adamczyk
Programowanie Windows (Win32/Win64 API)
Sposoby zdalnego sterowania pulpitem
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Informatyka – szkoła gimnazjalna – Scholaris - © DC Edukacja Tworzenie stron WWW w programie Microsoft FrontPage Informatyka.
Komunikaty Windows Jacek Matulewski 22 września 2012 Programowanie Windows
Wykład 9 Programowanie w Windows 1.Programowanie zdarzeniowe 2.Zdarzenia obsługiwane przez Windows 3.Aplikacja obsługująca klawisz myszki 4.AppWizard PO9-1.
Wykład 10 Programowanie w Windows 1.Aplikacja dialogowa (Dialog Based) PO10-1 / 26.
Pakiety numeryczne Graphical User Interface Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Portal edukacyjny J A V A S C R I P T JĘZYK PROGRAMOWANIA STRON HTML Opracowała: Anna Śmigielska.
Tworzenie wykresów część I
Przewodnik Tworzenie powiadomień dotyczących czasopism w EBSCOhost
Style i szablony w MS Word 2010
 Podstawowy składnik.NET Framework  Technologia tworzenia w pełni dynamicznych stron internetowych działających po stronie serwera  Zorientowanie na.
Edytor tekstu Word – możliwości graficzne
Excel 2007 dla średniozaawansowanych Zajęcia z Prowadzący: Artur Kołos.
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Inżynieria oprogramowania Wzorce konstrukcyjne WWW: Jacek Matulewski Instytut Fizyki, UMK.
Wykład 4 Dr Aneta Polewko-Klim
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Prezentacja Projektowa – wersja okienkowa
Grafika i komunikacja człowieka z komputerem
Najważniejsze informacje dotyczące programu Sway.
Zapis prezentacji:

Tworzenie graficznego interfejsu użytkownika (GUI) Programowanie Windows Tworzenie graficznego interfejsu użytkownika (GUI) Jacek Matulewski 15 marca 2015 http://www.fizyka.umk.pl/~jacek/dydaktyka/winprog/

Powtórzenie Rozwinięcie projektu „WinMain_InicjacjaOkna” Funkcja WinMain (wejście, ang. entry point) Klasa C++ okna Okno Procedura okna, funkcja WndProc i metoda klasy C++ Tworzenie okna (RegisterClassEx, CreateWindow) Kontrolki są oknami – otrzymują komunikaty

Tworzenie i obsługa kontrolek GUI Tworzenie kontrolki: CreateWindow Korzystamy z istniejących klas: klasa przycisku jest zarejestrowana pod nazwą „Button”, suwaka - „msctls_trackbar32” (alias TRACKBAR_CLASS) Aby kontrolka była „żywa”, okno musi reagować na komunikaty WM_COMMAND przysyłane po kliknięciu przycisku My określamy numer wParam identyfikujący przycisk

Tworzenie przycisków Funkcja składowa tworząca dwa przyciski: void COkno::TworzPrzyciski(HWND uchwytOknaRodzica) { hPrzyciskHello = CreateWindow( "Button", //nazwa klasy "Hello World!", //etykieta WS_CHILD | WS_VISIBLE, //styl 30, 30, 200, 70, //geometria uchwytOknaRodzica, (HMENU)ID_BUTTON_HELLO, //identyfikator (wParam) wc.hInstance, NULL);

Tworzenie przycisków Funkcja składowa tworząca dwa przyciski: void COkno::TworzPrzyciski(HWND uchwytOknaRodzica) { ... hPrzyciskZamknij = CreateWindow( "Button", "Zamknij", WS_CHILD | WS_VISIBLE, 240, 30, 200, 70, uchwytOknaRodzica, (HMENU)ID_BUTTON_ZAMKNIJ, wc.hInstance, NULL); } Uchwyt do „okna” przycisku

Obsługa przycisków Funkcja składowa dedykowana do obsługi przycisków: void COkno::ObslugaPrzyciskow(WPARAM wParam) { switch(wParam) case ID_BUTTON_HELLO: MessageBox(this->uchwytOkna,"Hello World!", "Witaj świecie!",MB_OK); break; case ID_BUTTON_ZAMKNIJ: PostMessage(this->uchwytOkna,WM_CLOSE,0,0); } Przekształcanie komunikatów (klawiatury)

Tworzenie i obsługa w WndProc Wywołanie obu metod w procedurze okna LRESULT COkno::WndProc(HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam) { switch (message) case WM_CREATE: TworzPrzyciski(hWnd); break; case WM_COMMAND: ObslugaPrzyciskow(wParam); ...

Demo: Przyciski Kontynuacja aplikacji „WinMain_InicjacjaOkna” Czyste WinAPI (z pustego projektu)

Inne kontrolki Z innymi kontrolkami z GDI jest podobnie… Panel, który nie reaguje na działania użytkownika: hPanel = CreateWindow( "STATIC", "", //pusta etykieta WS_CHILD | WS_VISIBLE, margines, margines, szerokosc, wysokosc, hWnd, //uchwyt okna (HMENU)ID_PANEL, wc.hInstance, //GetModuleHandle(NULL), NULL);

Inne kontrolki Kontrolki z biblioteki Common Controls (plik comctl32.dll) Inicjacja biblioteki za pomocą funkcji InitCommonControlsEx, Struktura INITCOMMONCONTROLSEX pozwala określić, które zbiory bibliotek wczytać np. ICC_BAR_CLASSES Tworzenie standardowo za pomocą funkcji CreateWindow RECT rect; HWND hwndTrack = CreateWindow( TRACKBAR_CLASS, "Kontrolka Trackbar", WS_CHILD | WS_VISIBLE | TBS_ENABLESELRANGE | TBS_AUTOTICKS, rect.left, rect.top, ...

Inne kontrolki W czystym WinAPI nie mamy klas pozwalających na łatwe ustalanie własności kontrolek (por. MFC, VCL, QT); konfigurowanie kontrolek możliwe dzięki wysyłaniu do nich komunikatów (z pominięciem okna): SendMessage(hwndTrack, TBM_SETRANGE, (WPARAM) TRUE, (LPARAM) MAKELONG(min, max)); SendMessage(hwndTrack, TBM_SETPAGESIZE, 0, (LPARAM) 4); SendMessage(hwndTrack, TBM_SETTICFREQ, 15, (LPARAM) 1); SendMessage(hwndTrack, TBM_SETSEL, (WPARAM) FALSE, (LPARAM) MAKELONG(selMin, selMax)); SendMessage(hwndTrack, TBM_SETPOS, (WPARAM) TRUE, (LPARAM) selMin); SetFocus(hwndTrack);

Inne kontrolki Procedura okna – przesuwanie suwaków, powoduje zmianę koloru panelu (pozycje suwaków = składowe RGB koloru) i odświeżenie panelu case WM_CTLCOLORSTATIC: { DWORD dwPos1 = SendMessage(hTrackBar1, TBM_GETPOS, 0, 0); DWORD dwPos2 = SendMessage(hTrackBar2, TBM_GETPOS, 0, 0); DWORD dwPos3 = SendMessage(hTrackBar3, TBM_GETPOS, 0, 0); HWND hCtl =(HWND)lParam; HBRUSH brush=CreateSolidBrush( RGB((int)dwPos1,(int)dwPos2,(int)dwPos3)); if(hCtl == hPanel) return (LRESULT) brush; else return (LRESULT)GetStockObject(WHITE_BRUSH); } case WM_HSCROLL: RedrawWindow(hPanel,NULL,NULL,RDW_INVALIDATE); break;

Demo: Kolory Kontynuacja aplikacji „Przyciski” Czyste WinAPI (z pustego projektu) Adaptacja rozmiaru kontrolek przy zmianie rozmiaru okna

Odczyt i zmiana „własności” okien MSDN „Develop desktop apps”: https://msdn.microsoft.com/pl-pl/library/windows/desktop/ Lista funkcji dotyczących okien i kontrolek : https://msdn.microsoft.com/pl-pl/library/windows/desktop/ms632595(v=vs.85).aspx Pierwszym argumentem tych funkcji jest zawsze uchwyt okna Tytuł okna: SetWindowText, GetWindowTest, Równoważne wysłanie komunikatu: WM_SETTEXT Położenie: SetWindowPlacement, SetWindowPos, Są również analogiczne funkcje Get.. Funkcja: MoveWindow, ShowWindow SetActiveWindow, SetForegroundWindowRect BringWindowToTop, funkcje Get.. oraz GetTopWindow

Odczyt i zmiana „własności” okien Kontrolki i okna-dzieci: SetParent, GetParent Informacje o oknie: GetWindowInfo Położenie inaczej: GetWindowRect, GetClientRect (por. GetWindowPos i GetWindowPlacement), Struktura RECT (left, top, right, bottom) AdjustWindowRect(Ex) – oblicza zewnętrzny rozmiar okna na podstawie podanego rozmiaru obszaru klienta Zamykanie: CloseWindow, DestroyWindow Pierwsza wysyła komunikat WM_CLOSE, w którym można wyświetlić pytanie. Jeżeli jest zgoda na zamknięcie, należy wywołać drugą funkcję, która rzeczywiście zamyka okno AnimateWindow – animacje tworzenia i zamykania okna

Demo: Lista okien (MFC) Funkcje: EnumWindows, EnumChildWindows Callback: EnumWindowProc

Ciekawostka: zmiana kształtu okna Regiony, region dostępny poprzez uchwyt HRGN Tworzenie regionów: CreateRectRgn, CreateRoundRectRgn, CreateEllipticRgn, CreatePolygonRgn, CombineRgn Wypełnianie regionu: FillRgn (argumentem jest pędzel) Ustalanie kształtu okna na bazie regionów: SetWindowRgn, GetWindowRgn Inne zastosowanie: detekcja ruchu i kliknięć myszy

Przykładowe pytania Jakiej funkcji należy użyć do utworzenia okna, a jakiej do utworzenia „kontrolki”? Czym jest klasa okna? Jakie zawiera informacje? Jaka funkcja służy do znalezienia uchwytu okna o znanej nazwie klasy? Do czego służy procedura okna? Jak wykonać pętlę po wszystkich oknach i ich oknach-dzieciach? Do czego służy funkcja AdjustWindowRect? Czy można zmienić tytuł okna z innej aplikacji? Jakiej użyć do tego funkcji? A jakiej w przypadku „własnego” okna?