Microsoft Visual C++.

Slides:



Advertisements
Podobne prezentacje
ALLEGRO PIERWSZA GRA: WYŚCIG
Advertisements

C++ w Objectivity Marcin Michalak s1744. Pomocne pakiety: Data Definition Language (DDL). Standard Template Library (STL). Active Schema.
OOPC++ - operatory1 Operatory class complex { private: double re, im; public: complex (double r, double i = 0) { re = r; im = i; } friend complex operator+
Mirosław Ochodek Sponsorzy: JFace Jak jeszcze szybciej tworzyć interfejsy? ECESIS Eclipse Community Education Project An.
142 JAVA – sterowanie i wątki public class A20 extends javax.swing.JApplet implements ActionListener { private int licznik = 0; private JTextField t =
Porysujmy trochę czyli Łączenie SQLa, AutoCADa i Delphi
Czyli jak zrobić prezentację komputerową?
Zastosowanie osi symetrii i wielokątów w przyrodzie
Tajemnice klawiatury.
FUNKCJA L I N I O W A Autorzy: Jolanta Kaczka Magdalena Wierdak
Zastosowanie Internetu
III. Proste zagadnienia kwantowe
Systemy klastrowe inaczej klasterowe.
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
Prąd Elektryczny.
Efekt cieplarniany jako skutek nadmiernej emisji CO 2 Wrzesień – Październik 2009 TWORZENIE SZKÓŁ DLA ZRÓWNOWAŻONEGO ROZWOJU.
To jest bardzo proste  Lekcja nr 3
Tablice.
Prezentacja z przedmiotu „systemy wizyjne”
Podstawy programowania
Program wspomagający sekretariat Korespondencja. Wprowadzenie Instytucja dla którego ma być aplikacja pracuje w sieci Ethernet. Serwery pracują na systemie.
Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Podyplomowe Studium Programowania i Zastosowań Komputerów DorFin Baza.
Formatowanie i modyfikacja dokumentu tekstowego
ALGORYTM.
Microsoft ® Lync 2010 szkolenie dotyczące aplikacji grupy odpowiedzi.
Wykonała Sylwia Kozber
Cz.8 Zdarzenia. Refleksja – przypomnienie Event Programowanie zdarzeniowe Do dzieła!
Antonie de Saint-Exupery
Komunikacja z platformą T2S
Rola tabel w kodzie HTML
Komputerowe prezentacje
xHTML jako rozszerzenie HTML
Instalacja serwera WWW na komputerze lokalnym
PHP Operacje na datach Damian Urbańczyk. Operacje na datach? Dzięki odpowiednim funkcjom PHP, możemy dokonywać operacji na datach. Funkcje date() i time()
HTML Podstawy języka hipertekstowego Damian Urbańczyk.
FORMY UCZESTNICTWA OBYWATELI W ŻYCIU PUBLICZNYM
Tworzenie tabel w edytorze Word
Warsztaty C# Część 2 Grzegorz Piotrowski Grupa.NET PO
Warsztaty C# Część 3 Grzegorz Piotrowski Grupa.NET PO
KINECT – czyli z czym to się je?. Damian Zawada
BEZPIECZNY INTERNET. PRZEGLĄDANIE STRON INTERNETOWYCH.
TWORZENIE SPISU TREŚCI Opracowała: Iwona Kowalik.
Sieci komputerowe. Nowe technologie komputerowe
Wskaźniki.
Lokalne konta użytkowników i grup
Wielowymiarowa analiza poziomu ubóstwa w województwie podlaskim WSTĘPNE WYNIKI BADAŃ
1 Strategia dziel i zwyciężaj Wiele ważnych algorytmów ma strukturą rekurencyjną. W celu rozwiązania rozwiązania problemu algorytm wywołuje sam siebie.
Bazy danych.
A. Jędryczkowski – 2006 ©. Tablica to struktura danych zawierająca zbiór obiektów tego samego typu i odpowiada matematycznemu pojęciu wektora (tablica.
Pliki elementowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików elementowych. Pliki takie zawierają informację zakodowaną
Budowa programu #include /*instrukcje preprocesora */ #include int main(void) { /*podstawowa funkcja programu */ int a=1; /*deklaracja i inicjalizacja.
Narzędzie wspomagające projektowanie aplikacji Proficy iFIX
W.K. (c) Bazy danych Access. 2W.K. (c) 2007 Baza danych - definicje Baza danych to zbiór informacji dotyczących określonego tematu (stanowiących.
Grupy użytkowników1 Administracja Sieciami komputerowymi Grupy użytkowników.
Temat 5: Elementy meta.
Temat 1: Składnia języka HTML
Temat 1: Umieszczanie skryptów w dokumencie
Temat 6: Elementy podstawowe
Temat 4: Znaki diakrytyczne i definiowanie języka dokumentu
Informacje podstawowe
Wykład 6 Programowanie systemowe w Linux: Wątki i ich synchronizacja
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 4.
Warsztaty użytkowników programu PLANS – Karwia06 Język makropoleceń JMP programu PLANS Część I mgr inż. Tomasz Zdun.
- przykłady.
Instrukcja switch switch (wyrażenie) { case wart_1 : { instr_1; break; } case wart_2 : { instr_2; break; } … case wart_n : { instr_n; break; } default.
Instrukcja switch switch (wyrażenie) { case wart_1 : { instr_1; break; } case wart_2 : { instr_2; break; } … case wart_n : { instr_n; break; } default.
Obsługa strumienia wejścia/wyjścia /zajęcia nr 2/ printf – wyświetlanie scanf – ??? dla printf: \n - nowa linia \t - tabulator poziomy \b - znak cofania.
Instrukcje sterujące: W instrukcjach sterujących podejmowane są decyzje o wykonaniu tych czy innych instrukcji programu. Decyzje te podejmowane są w zależności.
Komtech Sp. z o.o. Magic Janusz ROŻEJ.
Magic Janusz ROŻEJ Komtech Sp. z o.o.
Zapis prezentacji:

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, WM_MOUSEMOVE, WM_MOUSEWHEEL Komunikaty klawiatury: WM_KEYDOWN, WM_KEYUP, WM_CHAR

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

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

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)

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

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

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

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

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”);

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

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();

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.

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

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]

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…. }

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

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)

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

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

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

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

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

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.