Programowanie Windows

Slides:



Advertisements
Podobne prezentacje
Funkcje w PHP ABK.
Advertisements

Rysowanie w Java void drawString(String tekst, pozX, pozY)
Ćwiczenie (1) Dostosuj poniższy program do potrzeb zdefiniowanych w treści programu zaliczeniowego: #include void dodaj(){}; void edytuj(){}; void usun(){};
Wstęp do programowania
Programowanie obiektowe
Jarosław Kuchta Komunikaty w Windows.
Programowanie wizualne
Programowanie obiektowe
Klasy i obiekty.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Algorytmy – zapis struktur programowania
Static, const, volatile.
Systemy rozproszone W. Bartkiewicz
Języki programowania C++
Standardowe kontrolki (1)
Dziel – Rządź - Złącz.
Programowanie obiektowe w Javie
Instrukcje Instrukcja : definicja obliczenia i określenie sposobu wykonania tego obliczenia. Program : ciąg instrukcji wykonywanych kolejno od pierwszej.
Programowanie Lokalnych Aplikacji .NET
Ćwiczenie (1) Dostosuj poniższy program do swojego programy zaliczeniowego. (Plik z programem jest dostępny pod adresem
Sprawy organizacyjne 1. Zasady zaliczenia przedmiotu
Project made by Bartosz Rumiński Kl. III i rok 2007/2008.
Malowanie na ekranie- Paint (Paintbrush).
Visual C++ Zastosowania Informatyki Wykład 6 Copyright, 2003 © Adam Czajka.
C# Windows Forms Zastosowania Informatyki Wykład 3
C# Windows Forms Zastosowania Informatyki Wykład 2
Pułapki programowania obiektowego Adam Sawicki - – 2 stycznia 2011www.asawicki.info.
Odczytywanie numeru seryjnego systemu operacyjnego komputera. (z ang
Programowanie w Środowisku Windows Common controls.
Podstawy programowania
Programowanie w Środowisku Windows
Podstawy programowania II
Win32 i DirectX. Czym jest DirectX ? API umożliwiające/ułatwiające zarządzanie głównie grafiką (2D/3D) i dźwiękiem zazwyczaj wykorzystywane w grach.
Podstawy WINAPI - MessageBOX
Przekazywanie argumentów
Programowanie Windows na przykładzie C# część 1
Programowanie strukturalne i obiektowe
Programowanie obiektowe – zastosowanie języka Java SE
Programowanie w Środowisku Windows
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Programowanie komponentowe jesień-zima 2013
EDYTOR GRAFIKI "PAINT" Prezentacja ma na celu zapoznanie uczniów z podstawowymi funkcjami edytora grafiki Paint.
Dobry kod OO Jeżeli zapytamy statystycznego programistę z czym kojarzy mu się dobry kod OO to najprawdopodobniej będzie mówił o wzorcach projektowych.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
EDYTOR GRAFIKI PAINT - podstawy pracy.
Systemy operacyjne Wykład 3a Działanie aplikacji okienkowej dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki
EDYTOR GRAFIKI PAINT - podstawy pracy.
Programowanie strukturalne i obiektowe C++ Przeładowanie operatorów Robert Nowak.
Oprogramowanie komponentowe w środowisku Microsoft Katarzyna Kuźniar 4 FDA, C1.
Podstawowe narzędzia programu Paint
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Tworzenie graficznego interfejsu użytkownika (GUI)
1 Zagadnienia na egzamin. 2 Język C podsumowanie Struktura programu w języku C Zmienne, Stałe Operacje arytmetyczne Operatory logiczne Priorytety operatorów.
Biblioteki DLL Jacek Matulewski 15 kwietnia 2015 Programowanie Windows
Komunikaty Windows Jacek Matulewski 22 września 2012 Programowanie Windows
Wykład 11 Aplikacje SDI PO11-1 / 22 Single Document Interface 1.Klasy aplikacji SDI 2.Menu systemowe aplikacji SDI 3.Serializacja 4.Tworzenie widoku 5.Tworzenie.
Wykład 10 Programowanie w Windows 1.Aplikacja dialogowa (Dialog Based) PO10-1 / 26.
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Switch. Instrukcja switch Składnia instrukcji: switch (wyrażenie){ case wyrażenie_stałe1: ciąg instrukcji dla wariantu 1; break; case wyrażenie_stałe2:
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Prezentacja multimedialna dla młodszych dzieci
Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C
Jacek Matulewski 21 listopada 2016
Grafika i komunikacja człowieka z komputerem
Programowanie obiektowe – zastosowanie języka Java SE
Jacek Matulewski 15 kwietnia 2015 (aktualizacja: 10 marca 2018)
Tworzenie graficznego interfejsu użytkownika (GUI)
Odczytywanie numeru seryjnego systemu operacyjnego komputera. (z ang
Zapis prezentacji:

Programowanie Windows W środowisku Visual C++ Część I Anna Tomkowska Politechnika Koszalińska 2007

Szkielet aplikacji 1/14 Ładownie bibliotek #include … Deklaracja zmiennych globalnych Deklaracja funkcji Int WINAPI WinMain(..) { deklaracja zmiennych wypełnienie klasy WNDCLASS rejestracja wypełnionej klasy RegisterClass(…) utworzenie okna uzyskując uchwyt HWND CreateWindowEx(…) wyświetlenie okna ShowWindow(…) odświerzenie okna UpdateWindow(…) Pętla komunikatów } LRESULT CALLBACK ProceduraOkna(…) switch(komunikat){…} Inne ewentualne funkcje

Rysowanie 1/14 LRESULT CALLBACK WndProc(…) { static int xp, yp, xk, yk; HDC hdc; … case WM_LBUTTONDOWN: xp=xk=LOWORD(lParam); yp=yk=HIWORD(lParam); return 0; case WM_LBUTTONUP: xk=LOWORD(lParam); yk=HIWORD(lParam); hdc = GetDC(hWnd); Rectangle(hdc, xp, yp, xk, yk); ReleaseDC(hWnd,hdc); }

Rysowanie 4/14 LRESULT CALLBACK WndProc(…) { static int rysuj=0; … case WM_LBUTTONDOWN: rysuj=1; return 0; case WM_LBUTTONUP: rysuj=0; return 0; case WM_MOUSEMOVE: if (rysuj) hdc = GetDC(hWnd); xk=LOWORD(lParam); yk=HIWORD(lParam); Rectangle(hdc,xp,yp,xk,yk); ReleaseDC(hWnd,hdc); } return 0;

Tworzenie bitmap 3/14 LRESULT CALLBACK WndProc(…) { static HBITMAP hBitmap, HDC hdcMap; RECT rc; … case WM_CREATE: GetClientRect(hWnd,&rc); hdc=GetDC(hWnd); hBitmap = CreateCompatibleBitmap(hdc,rc.right,rc.bottom); hdcMap = CreateCompatibleDC(hdc); SelectObject(hdcMap,hBitmap); PatBlt(hdcMap,0,0, rc.right,rc.bottom,WHITENESS); ReleaseDC(hWnd,hdc); return 0; case WM_DESTROY: DeleteDC(hdcMap); DeleteObject(hBitmap); PostQuitMessage(0);

Rysowanie po bitmapie 4/14 LRESULT CALLBACK WndProc(…) { … case WM_LBUTTONUP: hdc = GetDC(hWnd); Rectangle(hdc, xp, yp, xk, yk); ReleaseDC(hWnd,hdc); Rectangle(hdcMap, xp, yp, xk, yk); InvalidateRect(hWnd,0,0); return 0; }

Wyświetlanie bitmapy 5/14 LRESULT CALLBACK WndProc(…) { PAINTSTRUCT ps; … case WM_MOUSEMOVE: BitBlt(hdc,xp,yp,xk-xp,yk-yp,hdcMap,xp,yp,SRCCOPY); xk=LOWORD(lParam); yk=HIWORD(lParam); return 0; case WM_PAINT: GetClientRect(hWnd,&rc); hdc = BeginPaint(hWnd,&ps); BitBlt(hdc,0,0,rc.right,rc.bottom,hdcMap,0,0,SRCCOPY); EndPaint(hWnd,&ps);

5/14 xp, yp b xk, yk xk, yk a b = yk-yp a = xk -xp Okno aplikacji podczas przetwarzania komunikatu WM_MOUSEMOVE BITMAPA BitBlt(hdc, xp, yp, a, b, hdcMap, xp, yp, SRCCOPY); xp, yp b case WM_LBUTTONDOWN: xp=xk=LOWORD(lParam); yp=yk=HIWORD(lParam); break; case WM_LBUTTONUP: xk=LOWORD(lParam); yk=HIWORD(lParam); … case WM_MOUSEMOVE: … (jeżeli rysuj = 1) BitBlt(hdc,xp,yp,xk-xp,yk-yp,hdcMap,xp,yp,SRCCOPY); … ( Rysuj figurę) case WM_PAINT: BitBlt(hdc,0,0,rc.right,rc.bottom,hdcMap,0,0,SRCCOPY); xk, yk xk, yk a b = yk-yp a = xk -xp

Tworzenie piór i pędzli 6/14 Tworzenie piór i pędzli LRESULT CALLBACK WndProc(…) { static HPEN pen; static HBRUSH brush; … case WM_CREATE: srand((unsigned) time(0)); return 0; case WM_LBUTTONDOWN: pen = CreatePen(PS_SOLID,3,RGB(rand()%256,rand()%256,rand()%256)); brush = CreateSolidBrush(RGB(rand()%256,rand()%256,rand()%256)); case WM_LBUTTONUP: DeleteObject(pen); DeleteObject(brush);

Używanie piór i pędzli 7/14 LRESULT CALLBACK WndProc(…) { … case WM_LBUTTONUP: pen=(HPEN) SelectObject(hdcMap,pen); brush=(HBRUSH) SelectObject(hdcMap,brush); Rectangle(hdcMap, xp, yp, xk, yk); DeleteObject(pen); DeleteObject(brush); return 0; case WM_MOUSEMOVE: pen=(HPEN) SelectObject(hdc,pen); brush=(HBRUSH) SelectObject(hdc,brush); Rectangle(hdc, xp, yp, xk, yk);

Tworzenie menu głównego 8/14 Tworzenie menu głównego 2. 1. 3. 4. 5.

Tworzenie menu głównego 9/14 Tworzenie menu głównego 1. 3. 4. 2. 5.

Dodawanie menu głównego 10/14 Dodawanie menu głównego int WINAPI WinMain(…) { WNDCLASS wc; wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1); … } int WINAPI WinMain(…) { … HMENU hMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_MENU1)); HWND hWnd = CreateWindow("klasa_okna", "program", WS_OVERLAPPED, 0, 0, 300,300, 0, hMenu, hInst, 0 ); }

Komunikaty menu 11/14 LRESULT CALLBACK WndProc(…) { static int figura = ID_RYSUJ_PROSTOKAT; … case WM_COMMAND: switch(LOWORD(wParam)) case ID_RYSUJ_ PROSTOKAT : case ID_RYSUJ_ELIPSA: case ID_RYSUJ_WIELOKAT: CheckMenuItem(GetMenu(hWnd), figura, MF_UNCHECKED); figura=LOWORD(wParam); CheckMenuItem(GetMenu(hWnd), figura, MF_CHECKED); break; } return 0;

12/14 Rysowanie void RysujFigure(HDC hdc, int xp, int yp, int xk,int yk,int figura); LRESULT CALLBACK WndProc(…) { … case WM_LBUTTONUP: Rectangle(hdcMap, xp, yp, xk, yk); RysujFigure(hdcMap, xp, yp, xk, yk, figura); return 0; case WM_MOUSEMOVE: Rectangle(hdc, xp, yp, xk, yk); RysujFigure(hdc, xp, yp, xk, yk, figura);

13/14 void RysujFigure(HDC hdc, int xp, int yp, int xk,int yk,int figura) { switch(figura) case ID_RYSUJ_PROSTOKAT: Rectangle(hdc,xp,yp,xk,yk); break; case ID_RYSUJ_ELIPSA: Ellipse(hdc,xp,yp,xk,yk); case ID_RYSUJ_WIELOKAT: POINT pts[6]={{xp,yp}, {xp+(xk-xp)/2,yp}, {xp+2*(xk-xp)/3,yp+(yk-yp)/2}, {xk,yk}, {xk-(xk-xp)/2,yk}, {xk-2*(xk-xp)/3,yk-(yk-yp)/2}}; Polygon(hdc,pts,6); }

Menu podręczne 14/14 LRESULT CALLBACK WndProc(…) { HMENU hMenuP; POINT pt ; … case WM_CREATE: `… hMenuP =GetSubMenu(GetMenu(hWnd), 0); return 0; case WM_RBUTTONUP: pt.x= LOWORD(lParam); pt.y= HIWORD(lParam); ClientToScreen(hWnd, &pt); TrackPopupMenu(hMenuP, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hWnd, 0); }