Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Microsoft Visual C++. Typy aplikacji – okna dialogowe.

Podobne prezentacje


Prezentacja na temat: "Microsoft Visual C++. Typy aplikacji – okna dialogowe."— Zapis prezentacji:

1 Microsoft Visual C++

2 Typy aplikacji – okna dialogowe

3 Typy aplikacji – Multiple Document

4 Komunikacja w Windows komunikaty Komunikaty okna: –WM_CREATE, WM_INIT, WM_WM_CLOSE, –WM_KILLFOCUS, WM_ACTIVATE, WM_MOVE Komunikaty myszy: –WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONCLIC, –WM_MOUSEMOVE, WM_MOUSEWHEEL Komunikaty klawiatury: –WM_KEYDOWN, WM_KEYUP, WM_CHAR

5 Komunikacja w Windows komunikaty cd. Komunikaty przycisku –BN_CLICKED, BN_DOUBLECLICKED, BN_SETFOCUS Komunikaty listy: –LBN_SELCHANGE, LBN_DBCLICK Komunikaty Timera: –WM_TIMER

6 Elementy składowe okna Projekt okna dialogowego (interfaceu) jest odsprzęgnięty od obiektów i klas aplikacji. Każdy element okna opisywany jest przez szereg cech – właściwości: –ID-identyfikator komponentu (Etykieta, której przypisana jest liczba) –Caption – napis widoczny na ekranie (o ile komponent na to pozwala

7 Zmienne skojarzone (member variable) Każda aplikacja ma szereg klas. Część z nich są skojarzone z oknami dialogowymi, dokumentami, widokami i aplikacją. Każde okno dialogowe ma skojarzoną z nim klasę pochodzącą od klasy CDialog Każdy widok dokumentu ma skojarzoną z nim klasę pochodzącą od CView Wewnątrz tych klas mogą znajdować się deklarację atrybutów (zmiennych, które są skojarzone z elementami okna)

8 Zmienne skojarzone cd. Wyróżnia się 2 typy zmiennych skojarzonych z komponentami okna Control – pozwalające na sterowanie elementem okna (ukrywanie, zmianę ustawień, oraz dostęp do wartości) Value – zmienna przechowująca wartość danego elementu

9 Synchronizacja zmiennych skojarzonych Okno jest w pewien sposób odsprzęgnięte od obsługującej go klasy. Stan zmiennych skojarzonych jest synchronizowany z zawartością okna w metodzie DoDataExchange Metoda ta wywoływana jest pośrednio przez metodę: –UpdateData(true);// gdy należy ukatualnić wartości zmiennych na podstawie wartości w oknie dialogowym –UpdateData(false); //gdy należy uaktualnić zawartość okna dialogowego na podstawie wartości zmiennych

10 Klasa kontrolująca stan listy Do obsługi listy służy klasa CListBox Obiekt (m_lista) klasy CListBox ma następujące metody: –int idx=m_lista.AddString(napis); //dodaje napis, zwraca pozycję na liście –m_lista.DeleteString(n); //usuwa napis nr n z listy –idx=m_lista.GetCurSel(); //Zwraca nr aktualnie podswietlonego napisu –int MAX=m_lista.Count(); //zwraca ilosc elementow na liscie

11 Inne klasy MFC Klasa do obsługi łańcuchów tekstowych CString napis; napis=tekst; Klasa punktu CPoint – przechowuje pozycję: CPoint a(3,5); //punkt x=3, y=5 a.x=6;//punkt x=6, y=5 Bitampa CBitmap bt; bt.LoadBitmap(Nazwa); bt.LoadBitmap(ID_ZASOBOW);

12 Rysowanie – kontekst okna Kontekst jest obiektem, który umożliwia rysowanie i wyświetlanie w obszarze okna, które zostało z nim skojarzone. Stworzenie kontekstu (wewnątrz klasy pochodzącej od CView lub CDialog: CClientDC kontekst(this); Metody klasy CClientDC: Kontekst.MoveTo(x,y); Kontekst.LineTo(x,y); Kontekst.TextOut(x,y,napis);

13 Konteksty pamięciowe Są wykorzystywane w celu przygotowania rysunku w pamięci, a następnie można go wyświetlić w pewnym oknie w zadanej lokalizacji jeśli zdefiniowane jest pole klasy: CBitmap Buffor; to można wykonać następujące operacje: CClientDC Kontekst(this); //tworzy kontekst okna CDC MemDC; //obiekt kontekstu pamięciowego Buffor.CreateCompatibileBitmap(&Kontekst,szerokosc,wysokosc); //tworzy bitmape o rozdzielczosci i ustawieniach takich jak kontekst okna MemDC.CreateCompatibileDC(&Kontekst); //Tworzy kontekst pamięciowy kompatybilny kontekstem okna MemDC.SelectObject(&Buffor); //powiązanie bufora z kontekstem pamięciowym MemDC.LineTo(10,10); //rysowanie w kontekście pamięciowym; Kontekst.StretchBlt(poz_x,poz_y,szer,wys,&MemDC,poz_x_źr, poz_y_źr,szer_x_źr, szer_y_źr,SRCCOPY); //wyświetla kontekst pamięciowy na ekranie

14 Przerysowywanie okien Każde okno gdy jest ukryte, przysłonięte, lub gdy zmienia się jego rozmiar, wymaga przerysowania. Wszystkie obiekty widoczne w oknie muszą być rysowane w metodzie: –OnPaint (gdy okno pochodzi z klasy CDialog) –OnDraw (gdy okno pochodzi z klasy CView) Przerysowanie okna może być wymuszone przez wywołanie metody: Invalidate();

15 Komendy (menu, przyciski, skróty) Każda komenda w aplikacji może być wowyłwana z: –menu –tzw. toolboxu –za pomocą skrótu klawiszowego (accelerator) W Visual C z dla kadej komendy tworzy się odpowiedni identyfikator (np. przez dodanie pozycji menu, a następnie ten sam identyfikator przypisuje się ikonce (toolbar) lub klawiszowi skrótu (accelerator) Po wybraniu odpowiedniej pozycji z menu generowany jest komunikat (message) Obsługa takiego komunikatu może znajdować się w dowolnej klasie aplikacji.

16 Wyświetlanie komunikatów Dla MFC dowyświetlania okien komunikatów o błędach, ostrzeżeń i pytań wykorzystuje się funkcię int wynik=AfxMessageBox(komunikat,typ,0); gdzie typ określa typ okna: –MB_ABORTRETRYIGNORE –MB_OK –MB_OKCANCEL –MB_RETRYCANCEL –MB_YESNO –MB_YESNOCANCEL Wynik jest zależny od typu wciśniętego przycisku

17 Praca równoczesna - Timer Inicjacja: SetTimer(nr,T,NULL); //nr – numer Timera , T – czas w [ms] //Musi być wykonana po stworzeniu okna dialogowego lub widoku (powinna się znajdować bądź w metodzie OnInitialUpdate, lub OnInitDialog) Należy skojarzyć komunikat WM_TIMER z odpowiednią funkcją która będzie wywoływana cyklicznie co T [ms]

18 Praca równoczesna - wątki Watek jest pewną częścią programu, która wykonywana jest równocześnie (współbieżnie) z programem głównym. Funkcja wątku (działa analogicznie jak funkcja main programu głównego ma następującą definicję: UINT FunkcjaWatku(LPVOID dane) { //kod watku…. }

19 Wątki cd… Gdzie argument dane są typu void*, (dowolny wskaźnik) Kod uaktywniający wątek: CWinThread *watek; watek = AfxBeginThread( FunkcjaWatku, (LPVOID)&dane)); gdzie drugi argument jest w wskaźnikiem do dowolnej zmiennej lub obiektu

20 Metody CWinThread watek->SuspendThread(); //zatrzymuje (usypia) wątek; watek->ResumeThread(); //Aktywuje wątek z uśpienia watek->AfxEndThread(ExitCode); //wymusza zakończenie wątku z kodem (ExitCode)

21 Pożyteczne funkcje Operaceje na plikach: –CreateFile//stworzenie otwarcie pliku (również portu RS232) –CloseHandle //zamknięcie pliku –ReadFile –WriteFile

22 Pożyteczne funkcje Konwersja atoi //char[]->int atof //char[]->float itoa //int ->char[] ftoa //float -> char[];

23 Tematy projektów Aplikacja do dystrybucji informacji wewnątrz grupy osób Karta dźwiękowa jako oscyloskop Aplikacja do wizualizacji i komunikacji z oscyloskopem i multimetrem (za pomocą łącza RS232) + moduł do przesyłąnia danych przez sieć Aplikacja do wizualizacji pulpitu na innych komputerach

24 Tematy projektów 2 Aplikacja do zaawansowanego wyświetlania i przetwarzania danych pomiarowych (prezentacja wykresów, wydruki+komunikacja z excelem i wordem (DDE)) Organizer dla wielu użytkowników, z możliwością wysyłania powiadomień na maila

25 Tematy 3 Wyścigi samochodowe (sieć) Karty np. makao etc. (cała grupa) ok. 5 różnych gier Gra planszowa (np. Monopol)(sieć)

26 Fazy projektowania Zawiązanie się grupy i wybór lidera Słowny opis reguł i elementów aplikacji –Z opisu należy wyodrębnić rzeczowniki (na ich bazie stworzyć listę potrzebnych obiektów) –Z opisu wyodrębnić przymiotniki i czasowniki i przypisać je do konkretnych obiektów jako ich metody –Dokonać szkiców elementów graficznych: plansz, okien itp. Po raz drugi dokonać przeglądu obiektów pod katem ich funkcji, (co będą robić, jak mają wyglądać) na podstawie tej analizy poszerzyć listę metod i właściwości. Stworzyć nagłówki klas i podzielić zadania Zaimplementować poszczególne metody.


Pobierz ppt "Microsoft Visual C++. Typy aplikacji – okna dialogowe."

Podobne prezentacje


Reklamy Google