IFiZR Laboratorium 5 Info



Podobne dokumenty
Podstawy programowania w języku C dla środowiska Windows

Projektowanie i programowanie aplikacji biznesowych. Wykład 2

Procedura okna: LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);

Programowanie w środowisku Windows. mgr inż. Krzysztof Mossakowski k.mossakowski@mini.pw.edu.pl

Podstawy programowania w języku C dla środowiska Windows

Podstawowy projekt OpenGL utworzony przy użyciu środowisk programistycznych firmy Microsoft.

Programowanie w środowiskach RAD Język C++ w środowiskach RAD

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

Wprowadzenie do programowania w Windows

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie I. Wprowadzenie do programowania w Windows

1.1. Programowanie dla Windows. Programowanie dla Windows. Komunikaty w systemie Windows. Application Programming Interface

Komunikaty w Windows. Jarosław Kuchta

Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowych

1. Wstęp. 2. Szablon. 1 WinApi Wstęp i szablon. Czym jest API?

Projektowanie i programowanie aplikacji biznesowych. Wykład 4

Programowanie współbieżne. Tworzenie i obsługa semaforów oraz wątków przy użyciu funkcji Windows API.

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Zegary. Zegary (timers) umożliwiają cykliczne w danych odstępach czasu wykonać określone operacje.

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

I - Microsoft Visual Studio C++

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Programowanie na poziomie sprzętu. Programowanie w Windows API

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

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

Załącznik do ćwiczenia w środowisku MASM32 wersji 10. Tryb graficzny w systemie Windows

Procedura okna: LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);

Programowanie pod Windows

Co nie powinno być umieszczane w plikach nagłówkowych:

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Część 4 życie programu

Programowanie w języku C++ z użyciem Windows API

INSTRUKCJE REPETYCYJNE PĘTLE

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Microsoft IT Academy kurs programowania

Metody Metody, parametry, zwracanie wartości

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

#include "stdafx.h" #include <iostream> #include "windows.h" using namespace std;

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy programowania skrót z wykładów:

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)

Obliczenie azymutu ze współrzędnych wersja C++ Builder

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Plik klasy. h deklaracje klas

Wstęp do Programowania 2

Cechy systemu Windows

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

Do nich też i tylko do nich będzie się w tym rozdziale odnosić sam termin okno.

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Projektowanie klas c.d. Projektowanie klas przykład

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

3 Przygotował: mgr inż. Maciej Lasota

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Programowanie obiektowe

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Języki programowania - podstawy

Na ekranie monitora zostaną wyświetlone w dwu liniach teksty Pierwsza linia Druga linia

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Rodzina protokołów TCP/IP. Aplikacja: ipconfig.

Wykład :37 PP2_W9

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Programowanie i struktury danych

ROZDZIAŁ 2. Operatory

Programowanie strukturalne i obiektowe

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

DLL Injection. Przejęcie kontroli nad procesem

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Wykład 4: Klasy i Metody

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Programowanie obiektowe język C++

Wstęp do programowania

Wstęp do Programowania 2

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:

Programowanie Procedurale

Rysowanie punktów na powierzchni graficznej

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

PARADYGMATY PROGRAMOWANIA Wykład 2

Qt sygnały i designer

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Programowanie w języku C++

Wykład IX. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Ćwiczenia 9 - Swing - część 1

1.1. Programowanie w Visual C++ Programowanie w Visual C++ Środowisko programisty Visual C++ Środowisko programisty Visual C++

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Najnowsza wersja dokumentu dostępna pod adresem

Operatory na rzecz typu TString

Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Transkrypt:

IFiZR Laboratorium 5 Info File->New->Project->Windows Application (DevC++) Kurs WinAPI: http://cpp0x.pl/kursy/kurs-winapi-c++/167 #include <windows.h> #include <iostream> #include <stdlib.h> #include <math.h> Przykład 2 LPSTR NazwaKlasy = "Klasa Okienka"; MSG Komunikat; // definicja nazw kontrolek HWND hprzycisk1, hedit1, hedit2, hedit3, hedit4, hedit5, htekst1, htekst2; // definicja funkcji double CharToDouble(HWND okno); LRESULT CALLBACK Panel( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ); // WinMain zamiast main int WINAPI WinMain( HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow ) { WNDCLASSEX wc; wc.cbsize = sizeof( WNDCLASSEX ); wc.style = 0; wc.lpfnwndproc = Panel; wc.cbclsextra = 0; wc.cbwndextra = 0; wc.hinstance = hinstance; wc.hicon = LoadIcon( NULL, IDI_APPLICATION ); wc.hcursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrbackground =( HBRUSH )( COLOR_WINDOW+8); // kolor formatki poprzez zmiane liczby wc.lpszmenuname = NULL; wc.lpszclassname = NazwaKlasy; wc.hiconsm = LoadIcon( NULL, IDI_APPLICATION ); // rejestrowanie okna if(!registerclassex( & wc ) ) { MessageBox( NULL, "Blad rejestracji okna!", "Error.", MB_ICONEXCLAMATION MB_OK ); return 1;

//tworzenie panelu (okna) HWND hwnd=createwindowex( WS_EX_CLIENTEDGE, NazwaKlasy, "Panel obliczen", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 400, NULL, NULL, hinstance, NULL ); if( hwnd == NULL ) { MessageBox( NULL, "Nie udalo sie utworzyc okna", "Error", MB_ICONEXCLAMATION ); return 1; ShowWindow( hwnd, ncmdshow ); UpdateWindow( hwnd ); // tworzenie kontrolek tj editow, buttonów itp htekst1=createwindowex( 0, "STATIC", "Podaj dane punktów P1(x1,y1) oraz P2 (x2,y2)", WS_CHILD WS_VISIBLE SS_CENTER, 90, 30, 200, 40, hwnd, NULL, hinstance, NULL ); htekst2=createwindowex( 0, "STATIC", "Wynik obliczen", WS_CHILD WS_VISIBLE, 110, 200, 120, 20, hwnd, NULL, hinstance, NULL ); hedit1 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD WS_VISIBLE WS_BORDER, 50, 80, 60, 30, hwnd, NULL, hinstance, NULL ); hedit2 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD WS_VISIBLE WS_BORDER, 110, 80, 60, 30, hwnd, NULL, hinstance, NULL ); hedit3 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD WS_VISIBLE WS_VISIBLE, 200, 80, 60, 30, hwnd, NULL, hinstance, NULL ); hedit4 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD WS_VISIBLE WS_VISIBLE, 260, 80, 60, 30, hwnd, NULL, hinstance, NULL ); hedit5 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD WS_DISABLED WS_VISIBLE, 100, 250, 150, 30, hwnd, NULL, hinstance, NULL ); hprzycisk1 = CreateWindowEx( 0, "BUTTON", " Licz dlugosc odcinka ", WS_CHILD WS_VISIBLE, 90, 150, 180, 30, hwnd, NULL, hinstance, NULL ); // UWAGA! Pętla komunikatów - przechwytyje wszelkie komunikaty while( GetMessage( & Komunikat, NULL, 0, 0 ) ) { TranslateMessage( & Komunikat ); DispatchMessage( & Komunikat ); return Komunikat.wParam; // obsluga zdarzen - czyli co ma wydarzyc sie po uzyciu danej kontrolki - nacisnieciu, wpisaniu, wybraniu itp LRESULT CALLBACK Panel( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch( msg ) { // obsługa zdarzenia zamykania okna case WM_CLOSE: DestroyWindow( hwnd ); case WM_DESTROY: PostQuitMessage( 0 );

// obsluga zdarzen "nacisniecia" jednego z przycieskow case WM_COMMAND: double liczba1, liczba2, liczba3, liczba4, wynik; char wynikchar[20]; // kontrolki rozroznia sie po nazwie - uchwycie // kiedy zostanie nacisniety jeden z przyciskow if( (HWND)lParam == hprzycisk1 ) { int textlength1 = GetWindowTextLength(hEdit1) + 1; int textlength2 = GetWindowTextLength(hEdit2) + 1; int textlength3 = GetWindowTextLength(hEdit3) + 1; int textlength4 = GetWindowTextLength(hEdit4) + 1; if(textlength1==1 textlength2==1 textlength3==1 textlength4==1) { int odp=messagebox( NULL, "Wpisz dane", "Brak wszystkich danych", MB_OK MB_ICONWARNING); return 0; liczba1=chartodouble(hedit1); liczba2=chartodouble(hedit2); liczba3=chartodouble(hedit3); liczba4=chartodouble(hedit4); wynik=sqrt(pow(liczba3-liczba1, 2) + pow(liczba4-liczba2, 2)); sprintf(wynikchar,"%0.8f",wynik); SetWindowText( hedit5, wynikchar); default: return DefWindowProc( hwnd, msg, wparam, lparam ); return 0; // przykladowa funkcja - konwersja double CharToDouble(HWND okno) { int textlength= GetWindowTextLength(okno) + 1; char *textbuffer = new char[textlength]; GetWindowText(okno, textbuffer, textlength); double liczba=atof(textbuffer); delete []textbuffer; return liczba;

#include <windows.h> #include <iostream> #include <stdlib.h> #include "interval.h" Przykład 1 #define ID_RB1 101 #define ID_RB2 102 #define ID_CB1 103 #define ID_P6 104 #define ID_T3 105 LPSTR NazwaKlasy = "Klasa Okienka"; MSG Komunikat; // definicja nazw kontrolek HWND hprzycisk1, hprzycisk2, hprzycisk3, hprzycisk4, hprzycisk5, hprzycisk6, hedit1, hedit2, hedit3, hedit4, hedit5, htekst1, htekst2, htekst3, hrb1, hrb2, hcb1; // deklaracja własnej funkcji double CharToDouble(HWND okno); LRESULT CALLBACK Panel( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ); // WinMain zamiast main int WINAPI WinMain( HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow ) { WNDCLASSEX wc; wc.cbsize = sizeof( WNDCLASSEX ); wc.style = 0; wc.lpfnwndproc = Panel; wc.cbclsextra = 0; wc.cbwndextra = 0; wc.hinstance = hinstance; wc.hicon = LoadIcon( NULL, IDI_APPLICATION ); wc.hcursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrbackground =( HBRUSH )( COLOR_WINDOW+23); // kolor formatki poprzez zmiane liczby wc.lpszmenuname = NULL; wc.lpszclassname = NazwaKlasy; wc.hiconsm = LoadIcon( NULL, IDI_APPLICATION ); // rejestrowanie okna if(!registerclassex( & wc ) ) { MessageBox( NULL, "Blad rejestracji okna!", "Error.", MB_ICONEXCLAMATION MB_OK ); return 1; //tworzenie panelu (okna) HWND hwnd=createwindowex( WS_EX_CLIENTEDGE, NazwaKlasy, "Panel obliczen", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 800, 450, NULL, NULL, hinstance, NULL ); if( hwnd == NULL ) { MessageBox( NULL, "Nie udalo sie utworzyc okna", "Error", MB_ICONEXCLAMATION ); return 1;

ShowWindow( hwnd, ncmdshow ); UpdateWindow( hwnd ); // tworzenie kontrolek tj editow, buttonów itp htekst1=createwindowex( 0, "STATIC", "Podaj dane", WS_CHILD WS_VISIBLE SS_CENTER, 100, 50, 120, 20, hwnd, NULL, hinstance, NULL ); htekst2=createwindowex( 0, "STATIC", "Wynik obliczen", WS_CHILD WS_VISIBLE, 100, 200, 120, 20, hwnd, NULL, hinstance, NULL ); htekst3=createwindowex( 0, "STATIC", "", WS_CHILD WS_VISIBLE, 570, 100, 130, 20, hwnd, (HMENU) ID_T3, hinstance, NULL ); hedit1 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD WS_VISIBLE WS_BORDER, 100, 100, 80, 30, hwnd, NULL, hinstance, NULL ); hedit2 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD WS_VISIBLE WS_BORDER, 200, 100, 80, 30, hwnd, NULL, hinstance, NULL ); hedit3 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD WS_DISABLED WS_VISIBLE, 100, 250, 150, 30, hwnd, NULL, hinstance, NULL ); hedit4 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD WS_DISABLED WS_BORDER, 100, 280, 60, 30, hwnd, NULL, hinstance, NULL ); hedit5 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD WS_DISABLED WS_BORDER, 170, 280, 60, 30, hwnd, NULL, hinstance, NULL ); hprzycisk1 = CreateWindowEx( 0, "BUTTON", "+", WS_CHILD WS_VISIBLE, 100, 150, 30, 30, hwnd, NULL, hinstance, NULL ); hprzycisk2 = CreateWindowEx( 0, "BUTTON", "-", WS_CHILD WS_VISIBLE, 140, 150, 30, 30, hwnd, NULL, hinstance, NULL ); hprzycisk3 = CreateWindowEx( 0, "BUTTON", "*", WS_CHILD WS_VISIBLE, 180, 150, 30, 30, hwnd, NULL, hinstance, NULL ); hprzycisk4 = CreateWindowEx( 0, "BUTTON", "/", WS_CHILD WS_VISIBLE, 220, 150, 30, 30, hwnd, NULL, hinstance, NULL ); hprzycisk5 = CreateWindowEx( 0, "BUTTON", "p^2", WS_CHILD WS_VISIBLE, 260, 150, 40, 30, hwnd, NULL, hinstance, NULL ); hprzycisk6 = CreateWindowEx( 0, "BUTTON", "Analizuj", WS_CHILD WS_VISIBLE, 420, 220, 120, 30, hwnd, (HMENU) ID_P6, hinstance, NULL ); hrb1 = CreateWindowEx(WS_EX_CLIENTEDGE, "BUTTON", "Opcja 1", WS_CHILD WS_VISIBLE BS_AUTORADIOBUTTON, 400, 100, 150, 20, hwnd, (HMENU) ID_RB1, hinstance, NULL ); hrb2 = CreateWindowEx(WS_EX_CLIENTEDGE, "BUTTON", "Opcja 2", WS_CHILD WS_VISIBLE BS_AUTORADIOBUTTON, 400, 135, 150, 20, hwnd, (HMENU) ID_RB2, hinstance, NULL ); hcb1 = CreateWindowEx(WS_EX_CLIENTEDGE, "BUTTON", "Checkbox", WS_CHILD WS_VISIBLE BS_AUTOCHECKBOX, 400, 180, 150, 20, hwnd, (HMENU) ID_CB1, hinstance, NULL ); // UWAGA! Pętla komunikatów - przechwytyje wszelkie komunikaty while( GetMessage( & Komunikat, NULL, 0, 0 ) ) { TranslateMessage( & Komunikat ); DispatchMessage( & Komunikat ); return Komunikat.wParam; // obsluga zdarzen - czyli co ma wydarzyc sie po uzyciu danej kontrolki - nacisnieciu, wpisaniu, wybraniu itp LRESULT CALLBACK Panel( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch( msg ) { // obsługa zdarzenia zamykania okna case WM_CLOSE: DestroyWindow( hwnd ); case WM_DESTROY: PostQuitMessage( 0 ); // obsluga zdarzen "nacisniecia" jednego z przycieskow case WM_COMMAND: double liczba1, liczba2, wynik; char *wynikchar;

// kontrolki rozroznia sie po nazwie - uchwycie // kiedy zostanie nacisniety jeden z przyciskow if( (HWND)lParam == hprzycisk1 (HWND)lParam == hprzycisk2 (HWND)lParam == hprzycisk3 (HWND)lParam == hprzycisk4 (HWND)lParam == hprzycisk5) { int textlength1 = GetWindowTextLength(hEdit1) + 1; int textlength2 = GetWindowTextLength(hEdit2) + 1; if(textlength1==1 textlength2==1) { int odp=messagebox( NULL, "Wpisz dane", "Brak wszystkich danych", MB_YESNOCANCEL MB_ICONWARNING); if(odp==6) // 1-OK 2-Anuluj(Cancel) 3-Przerwij(Abort) 4-Ponów próbę(retry) 5-Ignoruj(Ignore) 6-Tak(Yes) 7-Nie(No) MessageBox(HWND_DESKTOP,"Nacisnąłeś przycisk TAK","Informacja",MB_OK); return 0; liczba1=chartodouble(hedit1); liczba2=chartodouble(hedit2); wynikchar=new char[textlength1+textlength2+10]; // ukrywanie i odkrywanie Editow 3->wynik + - * / 4 i 5 wynik operacji na przedziale if(( HWND ) lparam == hprzycisk5) { ShowWindow(hEdit4, SW_SHOW); ShowWindow(hEdit5, SW_SHOW); ShowWindow(hEdit3, SW_HIDE); else { ShowWindow(hEdit4, SW_HIDE); ShowWindow(hEdit5, SW_HIDE); ShowWindow(hEdit3, SW_SHOW); //realizacja obliczen if(( HWND ) lparam == hprzycisk1 ) wynik=liczba1+liczba2; if(( HWND ) lparam == hprzycisk2 ) wynik=liczba1-liczba2; if(( HWND ) lparam == hprzycisk3 ) wynik=liczba1*liczba2; if(( HWND ) lparam == hprzycisk4 ) wynik=liczba1/liczba2; // potegowanie przedzialu if(( HWND ) lparam == hprzycisk5 ) { SetWindowText( hedit4, szer_inter(liczba1, liczba2, 1) ); SetWindowText( hedit5, szer_inter(liczba1, liczba2, 2) ); delete []wynikchar; if( (HWND)lParam == hprzycisk1 (HWND)lParam == hprzycisk2 (HWND)lParam == hprzycisk3 (HWND)lParam == hprzycisk4 ) { sprintf(wynikchar,"%0.8f",wynik); SetWindowText( hedit3, wynikchar); delete []wynikchar;

// troszke inaczej - uwzgledninie identyfikatorów kontrolek zdefiniowanych poprzez #define if(( HWND ) lparam == hrb1 ( HWND ) lparam == hrb2 ( HWND ) lparam == hcb1 ( HWND ) lparam == hprzycisk6) { switch( wparam ) { case ID_RB1: SetWindowText( htekst3, "Aktywna opcja 1" ); case ID_RB2: SetWindowText( htekst3, "Aktywna opcja 2" ); case ID_CB1: if(isdlgbuttonchecked(hwnd, ID_CB1 ) == BST_CHECKED) { SetWindowText( htekst3, "Zaznaczono CB"); else SetWindowText( htekst3, "Odznaczono CB"); case ID_P6: if(isdlgbuttonchecked(hwnd, ID_RB1 ) == BST_CHECKED) MessageBox( hwnd, "Wybrano opcję 1", "Info", MB_ICONINFORMATION ); if(isdlgbuttonchecked(hwnd, ID_RB2 ) == BST_CHECKED) MessageBox( hwnd, "Wybrano opcję 2", "Info", MB_ICONINFORMATION ); default: MessageBox( hwnd, "Obiekt widmo;)", "Info", MB_ICONINFORMATION); //CheckDlgButton( hwnd, ID_CB1, BST_CHECKED ); //ustaw "fajeczkę" //CheckDlgButton( hwnd, ID_CB1, BST_UNCHECKED ); //usuń "fajeczkę" default: return DefWindowProc( hwnd, msg, wparam, lparam ); return 0;

// przykladowa funkcja - konwersja double CharToDouble(HWND okno) { int textlength= GetWindowTextLength(okno) + 1; char *textbuffer = new char[textlength]; GetWindowText(okno, textbuffer, textlength); double liczba=atof(textbuffer); delete []textbuffer; return liczba; ********************** plik nagłówkowy interval.h ******************* #ifndef INTERVAL_H #define INTERVAL_H #include<math.h> using namespace std; class interval { private: double pocz, kon; public: interval() {pocz=0; kon=0; interval(double x, double y) {pocz=x; kon=y; void ustal_pocz(double x) {pocz=x; void ustal_kon(double x) { kon=x; double zwroc_pocz() {return pocz; double zwroc_kon() {return kon; void wyswietl() { cout<<endl<<" ["<<pocz<<","<<kon<<"]"<<endl; ; interval operator+(interval A, interval B) { interval W; W.ustal_pocz(A.zwroc_pocz()+B.zwroc_pocz()); W.ustal_kon(A.zwroc_kon()+B.zwroc_kon()); return W;

interval operator*(interval A, interval B) { interval W; double Ap, Ak, Bp, Bk; Ap=A.zwroc_pocz(); Ak=A.zwroc_kon(); Bp=B.zwroc_pocz(); Bk=B.zwroc_kon(); W.ustal_pocz(min(Ap*Bp, min(ap*bk, min(ak*bp, Ak*Bk)))); W.ustal_kon(max(Ap*Bp, max(ap*bk, max(ak*bp, Ak*Bk)))); return W; char* szer_inter(double x, double y, int z) { interval A(x,y); A=A*A; char *W; W=new char[20]; if(z==1) { sprintf(w,"%0.3f",a.zwroc_pocz()); else sprintf(w,"%0.3f",a.zwroc_kon()); return W; delete []W; #endif