1 / 26

Microsoft Visual C++

Microsoft Visual C++. Typy aplikacji – okna dialogowe. Typy aplikacji – Multiple Document. 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,

phiala
Download Presentation

Microsoft Visual C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 0-65535, 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.

More Related