Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Microsoft Visual C++.

Podobne prezentacje


Prezentacja na temat: "Microsoft Visual C++."— 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 (interface’u) 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. toolbox’u 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++."

Podobne prezentacje


Reklamy Google