Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych



Podobne dokumenty
Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Zaawansowane aplikacje internetowe - laboratorium

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Praca w środowisku Visual Studio 2008, Visual C

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Programowanie Obiektowe GUI

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Microsoft Visual C++

Programowanie obiektowe

Laboratorium 1 - Programowanie proceduralne i obiektowe

Aplikacje internetowe i rozproszone - laboratorium

Aplikacje WWW - laboratorium

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Krótkie wprowadzenie do projektowania interfejsu aplikacji przy użyciu biblioteki MFC

Informatyka I : Tworzenie projektu

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA: 4 ŚRODKI DYDAKTYCZNE:

Aplikacje WWW - laboratorium

Zaawansowane Programowanie Obiektowe. Microsoft Visual Studio 2015

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Platformy Programowania

Programowanie w Javie

Zaawansowane aplikacje internetowe

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

Ćwiczenia 9 - Swing - część 1

Laboratorium programowania urządzeń mobilnych

Formy dialogowe w środowisku Gnome

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium przyrządów wirtualnych. Ćwiczenie 3

Lokalizacja Oprogramowania

Warsztaty dla nauczycieli

imei CYFROWE PRZETWARZANIE SYGNAŁÓW Laboratorium Temat: Tworzenie aplikacji w środowisku LabWindows/CVI Instytut Metrologii, Elektroniki i Informatyki

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

PROE wykład 8 Interfejs użytkownika (GUI) dr inż. Jacek Naruniec

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski SYSTEMY SCADA

Ćwiczenie 6 Proste aplikacje - podstawowe komponenty.

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Programowanie obiektowe

Programowanie w środowisku graficznym GUI

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

Tworzenie projektu asemblerowego dla środowiska Visual Studio 2008.

Podstawy technologii WWW

STWORZENIE BIBLIOTEKI SŁUŻĄCEJ DO WCZYTYWANIA

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Programowanie wielowarstwowe i komponentowe

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Standardowe bloki funkcjonalne

Instrukcja instalacji nos niko w USB w bankowos ci Alior Banku

CoDeSys 3 programowanie w języku drabinkowym LD

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Zaawansowane aplikacje WWW - laboratorium

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski SYSTEMY SCADA

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

PWŚG Ćwiczenia 13. Ukończoną pracę należy przesłać na adres lub

MS Visual Studio Express 2012 for Web instalacja i konfiguracja

Web Services (SOAP) Ćwiczenie 1

Instrukcja laboratoryjna

Instrukcja instalacji nośników USB w systemie internetowym Alior Banku

Moduł Handlowo-Magazynowy Przeprowadzanie inwentaryzacji z użyciem kolektorów danych

Instrukcja nr 1 do Laboratorium z Programowania Obiektowego

Dodanie nowej formy do projektu polega na:

Wykład 7 Okna dialogowe, menu, pasek stanu itp.

Multimedia JAVA. Historia

Zasady Programowania (Projektowanie) C++ - część 6 1/9 Programowanie Wizualno Obiektowe (3)

Programowanie sterowników B&R

Enterprise JavaBeans (EJB)

dr inż. Tomasz Krzeszowski

Rys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Windows Workflow Foundation (wprowadzenie - prosty przykład Sequential Workflow):

Ćwiczenie 1. Modelowanie prostego procesu

FAQ: /PL Data: 3/07/2013 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-1200

ZAPOZNANIE SIĘ Z TWORZENIEM

Microsoft.NET: Warstwa dostępu do danych (DAL) w aplikacjach ASP.NET Web Forms

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych)

1. Tworzenie nowego projektu.

Ćwiczenia laboratoryjne. Oprogramowanie i badanie prostych metod sortowania w tablicach

1. Od czego zacząć? - Instalacja środowiska pracy

Programowanie Wizualno Obiektowe - zajęcia 2 (PWO_BCPP_2_2) Tworzenie i kompilowanie projektów Programowanie Wizualno Obiektowe Zajęcia 2, część 2

Tworzenie okna dialogowego w edytorze raportu SigmaNEST. część 1

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski SYSTEMY SCADA

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Visual Studio instalacja

Laboratorium A: Zarządzanie drukowaniem/klucz do odpowiedzi

Projektowanie aplikacji internetowych laboratorium

Aplikacje w środowisku Java

INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH

Pracownia internetowa w szkole ZASTOSOWANIA

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

Ćwiczenia z S Komunikacja S z dotykowymi panelami HMI na przykładzie współpracy sterownika z panelem KTP600 PN.

Instrukcja laboratoryjna cz.3

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Instrukcja obsługi DHL KONWERTER 1.6

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Transkrypt:

Laboratorium OiOSE. Programowanie w środowisku MS Visual C++ 1 Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych Organizacja i Oprogramowanie Systemów Elektronicznych Michał Kowalewski Programowanie w środowisku MS Visual C++ Politechnika Gdańska 2010

Laboratorium OiOSE. Programowanie w środowisku MS Visual C++ 2 1. Wprowadzenie Celem ćwiczenia jest zapoznanie się ze środowiskiem Microsoft Visual Studio 2008 i napisanie prostego programu opartego o okna dialogowe. Programowanie realizowane jest w języku C++. 2. Zadania do wykonania 1. Uruchomić środowisko MS Visual Studio 2008 2. W menu View wybrać następujące okna: Solution Explorer, Class View, Resource View, Output, Toolbox, Properties Window. Pozostałe okna zamknąć. 3. Utworzyć nowy projekt bazujący na bibliotece MFC i oparty o okna dialogowe: a. Uruchomić kreatora aplikacji: File/New/Project Project Types/Visual C++/MFC/MFC Application b. W polu Name wpisać nazwę programu i kliknąć OK. c. W kolejnych krokach wybrać rodzaj aplikacji: Dialog Based. 4. Wstawić na panelu dwie kontrolki: Slider Control i Progress Control. 5. Zdefiniować w klasie okna dialogowego Cnazwa_programuDlg zmienne kontrolne slider i progress przypisane kontrolkom Slider Control i Progress Control. Procedura przebiega następująco: a) wybrać kontrolkę na panelu b) z menu kontekstowego wybrać opcję Add Variable c) ustalić parametry zgodnie z rysunkami 6. Dodać do programu procedurę obsługi zdarzenia zmiany położenia suwaka kontrolki Slider Control. W tym celu z menu kontekstowego wybrać opcję Add Event Handler. Wybrać komunikat powiedomienia kontrolki NM_CUSTOMDRAW i wybrać Add and Edit, 7. Uzupełnić treść funkcji dodając kod progress.setpos(slider.getpos()); Sprawdzić działanie programu.

Laboratorium OiOSE. Programowanie w środowisku MS Visual C++ 3 8. Wstawić na panelu trzy przyciski Button oraz pole edycyjne EditControl. 9. W oknie Properties ustawić parametry kontrolek: Button1 ID = IDC_START Caption = Start Button2 ID = IDC_STOP Caption = Stop Button3 ID = IDC_RESET Caption = Reset EditControl ID = IDC_LICZNIK 10. Dodać zmienną o nazwie licznik do kontrolki EditControl (opcja Add Variable) 11. Zdefiniować w klasie okna dialogowego zmieną prywatną typu int o nazwie counter oraz zmienną typu LPTSTR o nazwie lpszstringbuf; 12. Dodać do zasobów aplikacji identyfikator timera ID_TIMER i nadać mu wartości równą 1. W tym celu w zakładce Resource View wybrać plik *.rc i z menu kontekstowego wybrać Resource Symbols. Dodać nowy identyfikator i wpisać Name: ID_TIMER, Value: 1. 13. Korzystając z zakładki Properties/Control Events dodać funkcje obłsugi zdarzenia BN_CLICKED przycisków Start, Stop i Reset. W kodzie programu powinny pojawić się funkcje OnBnClickedStart, OnBnClickedStop i OnBnClickedReset. 14. W oknie Properties panelu programu dodać procedury obsługi zdarzeń WM_TIMER i WM_DESTROY. W kodzie programu powinny pojawić się funkcje OnTimer i OnDestroy. 15. Uzupełnić kod programu (trzykropek oznacza nazwę programu): void C...Dlg::OnBnClickedStart() { SetTimer(ID_TIMER, 100, NULL); //Uruchomienie timera GetDlgItem(IDC_START)->EnableWindow(FALSE); GetDlgItem(IDC_STOP)->EnableWindow(TRUE); void C...Dlg::OnBnClickedStop() { KillTimer(ID_TIMER); //Zatrzymanie timera GetDlgItem(IDC_STOP)->EnableWindow(FALSE); GetDlgItem(IDC_START)->EnableWindow(TRUE); void C...Dlg::OnBnClickedReset() { counter=0; swprintf(lpszstringbuf,20,l"licznik = %d",counter); licznik.setwindowtextw(lpszstringbuf);

Laboratorium OiOSE. Programowanie w środowisku MS Visual C++ 4 void C...Dlg::OnTimer(UINT_PTR nidevent) { // Zwiększenie wartości licznika counter++; swprintf(lpszstringbuf,20,l"licznik = %d",counter); // Wpisanie wartości licznika do zmiennej licznik licznik.setwindowtextw(lpszstringbuf); CDialog::OnTimer(nIDEvent); BOOL C...Dlg::OnInitDialog() { CDialog::OnInitDialog(); //... // TODO: Add extra initialization here lpszstringbuf = (LPTSTR)GlobalAlloc(GPTR, 50); // Zerowanie licznika counter = 0; // Dezaktywacja przycisku Stop i kontrolki Licznik GetDlgItem(IDC_STOP)->EnableWindow(FALSE); GetDlgItem(IDC_LICZNIK)->EnableWindow(FALSE); swprintf(lpszstringbuf,20,l"licznik = %d",counter); licznik.setwindowtextw(lpszstringbuf); return TRUE; void C...Dlg::OnDestroy() { CDialog::OnDestroy(); // TODO: Add your message handler code here GlobalFree(lpszStringBuf); Przetestować program Zmiana interwału czasowego timera za momocą okna konfiguracji 1. Dodać do zasobów programu okno dialogowe i zdefiniować klasę tego okna (konf) dziedziczoną z klasy CDialog. 2. Umieścić w oknie jedno pole edycyjne. 3. Dodać do głównego pliku źródłowego programu plik nagłówkowy konf.h. 4. Dodać do pliku z klasą głównego okna dialogowego zmienną obiektową typu konf o nazwie konfiguracja. 5. Dodać do programu dwie zmienne globalne typu int (z poziomu zakładki Class View): a. interval (zmienna podawana w miejsce parametru 100 funkcji SetTimer) b. intervaltemp (zmienna tymczasowa przechowująca wartość interwału z kontrolki EditControl okna konfiguracyjnego, wykorzystywana jeśli naciśnięto OK). Zmienne należy ponadto zadeklarować w głownym pliku nagłówkowym. 6. Dodać do klasy okna konfiguracji funkcję obsługującą zdarzenie WM_DESTROY, aby przechwycić wartość z kontrolki Edit i wpisać wartość liczbową do zmiennej intervaltemp. Skorzystać z funkcji GetDlgItemInt.

Laboratorium OiOSE. Programowanie w środowisku MS Visual C++ 5 7. Dodać w głównym oknie programu przycisk uaktywniający okno konfiguracyjne. Kod funkcji wykonywanej przy naciśnięciu przycisku powinien mieć postać: void C...Dlg::OnBnClickedButton1() { int result = konfiguracja.domodal(); if (result == IDOK) { interval = intervaltemp; 8. Udoskonalić program tak, aby bieżąca wartość zmiennej interval pojawiała się w polu edycyjnym automatycznie po wyświetleniu okna konfiguracyjnego. Wskazówki: a. Dodać funckję OnInitDialog(). Funkcję tą należy zadeklarować jako wirtualną virtual BOOL OnInitDialog(); zobacz następną stronę b. Skorzystać z funkcji SetDlgItemInt. Utworzenie i oprogramowanie struktury menu programu 1. Dodać do zasobów programu Menu posiadające następującą strukturę: File Timer Exit Start Stop Reset Configure Dla poszczególnych opcji Menu powinny się pojawić w pliku Resource.h następujące identyfikatory: ID_TIMER_START, ID_TIMER_STOP, ID_TIMER_RESET, ID_TIMER_CONFIGURE, ID_FILE_EXIT 2. W edytorze Menu wygenerować szkielety funkcji callback dla każdej opcji. W tym celu wybrać z menu kontekstowego opcję Add Event Handler... Funkcje powinny zostać dołączone do klasy okna dialogowego C...Dlg. 3. Uzupełnić kod wygenerowanych funkcji callback w ten sposób, aby uzyskać jednakowy efekt pracy programu niezależnie od tego czy wybieramy opcję z Menu, czy też korzystamy z przycisków umieszczonych na panelu. Zadanie dodatkowe Rozbudowa programu poprzez dodanie w oknie konfiguracji przycisków wyboru kierunku pracy licznika (Up zliczanie w górę, Down zliczanie w dół do zera). 1. Dodać w oknie konfiguracji dwa przyciski opcji (Radio Button) oraz nadać im identyfikatory ID_UP oraz ID_DOWN. 2. Wstawić na panelu ramkę grupującą Group Box w taki sposób aby zawierała w sobie przyciski Up i Down. 3. W oknie właściwości dla przycisku Up zmienić wartość właściwości Group na True.

Laboratorium OiOSE. Programowanie w środowisku MS Visual C++ 6 4. Zdefiniować dwie zmienne globalne typu typu int: direction i directiontemp 5. W kodzie funkcji DoDataExchange klasy konf dodać wywołanie funkcji DDX_Radio DDX_Radio(pDX, ID_UP, directiontemp); 6. Uzupełnić kod źródłowy funkcji OnInitDialog i OnDestroy klasy konf BOOL konf::oninitdialog() { CDialog::OnInitDialog(); directiontemp = direction; UpdateData(FALSE); SetDlgItemInt(IDC_EDIT1,interval); return TRUE; void konf::ondestroy() { CDialog::OnDestroy(); // TODO: Add your message handler code here intervaltemp = GetDlgItemInt(IDC_EDIT1); UpdateData(TRUE); 7. Dodać w kodzie w kodzie źródłowym funkcji OnInitDialog klasy C...Dlg inicjalizację zmiennej direction wartością 0. 8. Uzupełnić kod źródłowy funkcji OnBnClickedKonf klasy C...Dlg void C...Dlg::OnBnClickedButton1() { // TODO: Add your control notification handler code here int result = konfiguracja.domodal(); if (result == IDOK) { interval = intervaltemp; direction = directiontemp; 9. Zmodyfikować kod źródłowy funkcji OnTimer, aby uzależnić kierunek pracy licznika od wartości zmiennej direction. Efekt końcowy Przetestowac program i zaprezentować prowadzącemu