Sunteți pe pagina 1din 8

Ministerul Educației, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea Calculatoare, Informatică și Microelectronică

Raport la
Lucrarea de laborator Nr. 3
Disciplina: Programarea pilotată de evenimente

Tema:“Curbe Bezier. Principiile de lucru cu tastatura. Principiile


de lucru cu mouse-ul’’

Au efectuat:

A verificat:
Chișinău – 2021

Tema: “Curbe Bezier. Principiile de lucru cu tastatura. Principiile


de lucru cu mouse-ul’’

Obiective:

 studierea primitivelor grafice ce permit afişarea curbelor Bezier ; 


 afişarea acestor curbe cu ajutorul formulelor;
 studierea metodelor şi principiilor de lucru cu tastatura;
 însuşirea modului de prelucrare a mesajelor parvenite de la tastatura;
 studierea metodelor şi principiilor de lucru cu mouse-ul;
 însuşirea modului de prelucrare a mesajelor parvenite de la şi mouse.

// Nastea.cpp : Defines the entry point for the application.


//

#include "framework.h"
#include "Nastea.h"

#define MAX_LOADSTRING 100


#define IDM_CLEAR 4
#define IDM_BEZ1 100
#define IDM_BEZ2 101

// Global Variables:
HINSTANCE hInst; // current instance
WCHAR szTitle[MAX_LOADSTRING]; // The title bar text
WCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
bool bezier1 = false;
bool bezier2 = false;
POINT Pt[4] = { { 100, 48 }, { 88, 246 }, { 364, 192 }, { 250, 48 } };
int varvar = 0;

void mybezier(HDC hdc, const POINT* Pt) {


mybezier(hdc, Pt);
}

// Forward declarations of functions included in this code module:


ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);

// TODO: Place code here.

// Initialize global strings


LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadStringW(hInstance, IDC_NASTEA, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance);

// Perform application initialization:


if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}

HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_NASTEA));

MSG msg;

// Main message loop:


while (GetMessage(&msg, nullptr, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

return (int) msg.wParam;


}

//
// FUNCTION: MyRegisterClass()
//
// PURPOSE: Registers the window class.
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEXW wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;


wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_NASTEA));
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_NASTEA);
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

return RegisterClassExW(&wcex);
}

//
// FUNCTION: InitInstance(HINSTANCE, int)
//
// PURPOSE: Saves instance handle and creates main window
//
// COMMENTS:
//
// In this function, we save the instance handle in a global variable and
// create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
hInst = hInstance; // Store instance handle in our global variable

HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,


CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

if (!hWnd)
{
return FALSE;
}

ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);

return TRUE;
}

//
// FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
//
// PURPOSE: Processes messages for the main window.
//
// WM_COMMAND - process the application menu
// WM_PAINT - Paint the main window
// WM_DESTROY - post a quit message and return
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
HMENU hMenubar = CreateMenu();
HMENU hFile = CreateMenu();
HMENU hOptions = CreateMenu();

switch (message)
{
case WM_CREATE: {
HMENU hMenubar = CreateMenu();
HMENU hFile = CreateMenu();
HMENU hOptions = CreateMenu();

AppendMenu(hMenubar, MF_POPUP, (UINT_PTR)hFile, TEXT("File"));


AppendMenu(hMenubar, MF_POPUP, NULL, TEXT("Edit"));
AppendMenu(hMenubar, MF_POPUP, (UINT_PTR)hOptions, TEXT("Bezier"));

AppendMenu(hFile, MF_STRING, IDM_EXIT, TEXT("Exit"));


AppendMenu(hOptions, MF_STRING, IDM_BEZ1, TEXT("BEZ_1"));
AppendMenu(hOptions, MF_STRING, IDM_BEZ1, TEXT("BEZ_2"));
AppendMenu(hOptions, MF_STRING, IDM_CLEAR, TEXT("CLEAR"));

SetMenu(hWnd, hMenubar);
break;
}

case WM_COMMAND:
{
int wmId = LOWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_EXIT:
DestroyWindow(hWnd);
break;
case IDM_BEZ1:
bezier2 = false;
bezier1 = true;
InvalidateRect(hWnd, NULL, TRUE);
break;
case IDM_BEZ2:
bezier2 = true;
bezier1 = false;
InvalidateRect(hWnd, NULL, TRUE);
break;
case IDM_CLEAR:
bezier2 = false;
bezier1 = false;
InvalidateRect(hWnd, NULL, TRUE);
break;

case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
if (bezier1)
PolyBezier(hdc, Pt, 4);
else if (bezier2)
mybezier(hdc, Pt);

EndPaint(hWnd, &ps);
}
break;
case WM_KEYDOWN:
switch (wParam)
{
case VK_NUMPAD8:
Pt[3].y--;
InvalidateRect(hWnd, NULL, TRUE);
break;

case VK_NUMPAD2:
Pt[3].y++;
InvalidateRect(hWnd, NULL, TRUE);
break;

case VK_NUMPAD6:
Pt[3].x++;
InvalidateRect(hWnd, NULL, TRUE);
break;

case VK_NUMPAD4:
Pt[3].x--;
InvalidateRect(hWnd, NULL, TRUE);
break;

case VK_UP:
Pt[0].y--;
InvalidateRect(hWnd, NULL, TRUE);
break;

case VK_DOWN:
Pt[0].y++;
InvalidateRect(hWnd, NULL, TRUE);
break;

case VK_RIGHT:
Pt[0].x++;
InvalidateRect(hWnd, NULL, TRUE);
break;

case VK_LEFT:
Pt[0].x--;
InvalidateRect(hWnd, NULL, TRUE);
break;
default:
break;
}
break;

case WM_MOUSEMOVE:
if (GetKeyState(MK_RBUTTON))
{
Pt[varvar].x = LOWORD(lParam);
Pt[varvar].y = HIWORD(lParam);
InvalidateRect(hWnd, NULL, TRUE);
}
break;
case WM_LBUTTONDOWN:
if (varvar == 3) varvar = -1;
varvar++;
break;

case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}

// Message handler for about box.


INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch (message)
{
case WM_INITDIALOG:
return (INT_PTR)TRUE;

case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
break;
}
return (INT_PTR)FALSE;
}

Rezultatul programului:
Fig.1 – Curba Bezier modificata cu ajutorul tastaturii si a mouse-ului

S-ar putea să vă placă și

  • Lab NR 4 MMC2 Duca Dumitru TI 194
    Lab NR 4 MMC2 Duca Dumitru TI 194
    Document11 pagini
    Lab NR 4 MMC2 Duca Dumitru TI 194
    Santa Claus
    Încă nu există evaluări
  • Lab 7 Somipp
    Lab 7 Somipp
    Document5 pagini
    Lab 7 Somipp
    Augusta Bucataru
    Încă nu există evaluări
  • Grafica Laborator Nr.2
    Grafica Laborator Nr.2
    Document8 pagini
    Grafica Laborator Nr.2
    Cebotari Ion
    100% (1)
  • Lab1 Pam
    Lab1 Pam
    Document9 pagini
    Lab1 Pam
    Ion Popescu
    100% (2)
  • Lab 6 Poo
    Lab 6 Poo
    Document5 pagini
    Lab 6 Poo
    Alex Tronciu
    Încă nu există evaluări
  • PPE Lab3
    PPE Lab3
    Document6 pagini
    PPE Lab3
    DanuIepuras
    Încă nu există evaluări
  • Intrebari Lab 18
    Intrebari Lab 18
    Document3 pagini
    Intrebari Lab 18
    Anastasia Gherman
    100% (1)
  • Laborator nr.1 APA
    Laborator nr.1 APA
    Document5 pagini
    Laborator nr.1 APA
    Anastasia Gherman
    Încă nu există evaluări
  • Ppe 1
    Ppe 1
    Document5 pagini
    Ppe 1
    Victor Lungu
    Încă nu există evaluări
  • Lab 1 PPE
    Lab 1 PPE
    Document4 pagini
    Lab 1 PPE
    King 79
    Încă nu există evaluări
  • Laboratorul 2 PPE
    Laboratorul 2 PPE
    Document4 pagini
    Laboratorul 2 PPE
    crismaruion
    Încă nu există evaluări
  • TW Lab4
    TW Lab4
    Document8 pagini
    TW Lab4
    Dan
    Încă nu există evaluări
  • TW Lab 5
    TW Lab 5
    Document4 pagini
    TW Lab 5
    danielploaia
    Încă nu există evaluări
  • TW Lab5
    TW Lab5
    Document3 pagini
    TW Lab5
    Dan
    Încă nu există evaluări
  • ASDN2
    ASDN2
    Document6 pagini
    ASDN2
    Viktor Dobrovolschi
    Încă nu există evaluări
  • Lab 4 MN
    Lab 4 MN
    Document3 pagini
    Lab 4 MN
    nn nnn
    Încă nu există evaluări
  • AMOO - Proiect de An
    AMOO - Proiect de An
    Document4 pagini
    AMOO - Proiect de An
    Dan
    Încă nu există evaluări
  • Raport: La Disciplina Metode Și Modele de Calcul 1
    Raport: La Disciplina Metode Și Modele de Calcul 1
    Document9 pagini
    Raport: La Disciplina Metode Și Modele de Calcul 1
    Anya Mr
    Încă nu există evaluări
  • Grafica Laborator Nr.3
    Grafica Laborator Nr.3
    Document5 pagini
    Grafica Laborator Nr.3
    Cebotari Ion
    100% (2)
  • MMC2 Modulul2
    MMC2 Modulul2
    Document16 pagini
    MMC2 Modulul2
    ViorelRotari
    Încă nu există evaluări
  • TW Lab2
    TW Lab2
    Document4 pagini
    TW Lab2
    Dan
    Încă nu există evaluări
  • POO Lab7
    POO Lab7
    Document6 pagini
    POO Lab7
    Dani Ela
    Încă nu există evaluări
  • Lab MMC2
    Lab MMC2
    Document5 pagini
    Lab MMC2
    Maxim
    Încă nu există evaluări
  • Lab7 POO
    Lab7 POO
    Document10 pagini
    Lab7 POO
    Grosu Elena
    Încă nu există evaluări
  • PPE Lab7
    PPE Lab7
    Document14 pagini
    PPE Lab7
    danielploaia
    Încă nu există evaluări
  • Lab 2 MMC Boj
    Lab 2 MMC Boj
    Document12 pagini
    Lab 2 MMC Boj
    Andrian Brinzan
    Încă nu există evaluări
  • Lab2 Somipp
    Lab2 Somipp
    Document6 pagini
    Lab2 Somipp
    Iov Albu
    Încă nu există evaluări
  • AC Lab 4
    AC Lab 4
    Document4 pagini
    AC Lab 4
    DanuIepuras
    Încă nu există evaluări
  • TW Lab 6
    TW Lab 6
    Document6 pagini
    TW Lab 6
    DanuIepuras
    Încă nu există evaluări
  • Lab.6 FC
    Lab.6 FC
    Document3 pagini
    Lab.6 FC
    Cristina Florea
    Încă nu există evaluări
  • Iepuras Daniel Lab 1 TS
    Iepuras Daniel Lab 1 TS
    Document4 pagini
    Iepuras Daniel Lab 1 TS
    DanuIepuras
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document20 pagini
    Lab 1
    Fil Gorea
    Încă nu există evaluări
  • TAP Lab4
    TAP Lab4
    Document10 pagini
    TAP Lab4
    Cristian Batir
    Încă nu există evaluări
  • SecrieruAndrei Amoo Lab5
    SecrieruAndrei Amoo Lab5
    Document6 pagini
    SecrieruAndrei Amoo Lab5
    andy secrieru
    Încă nu există evaluări
  • AI-191 Medinschi Ion SO4
    AI-191 Medinschi Ion SO4
    Document5 pagini
    AI-191 Medinschi Ion SO4
    Carolin
    Încă nu există evaluări
  • Laborator nr.3 POO
    Laborator nr.3 POO
    Document6 pagini
    Laborator nr.3 POO
    MARYAN Pătru
    Încă nu există evaluări
  • Lab. 2
    Lab. 2
    Document7 pagini
    Lab. 2
    Cristina Florea
    Încă nu există evaluări
  • Amoo 1
    Amoo 1
    Document8 pagini
    Amoo 1
    AlionaCrigan
    Încă nu există evaluări
  • Lucrare de Laborator nr.1
    Lucrare de Laborator nr.1
    Document17 pagini
    Lucrare de Laborator nr.1
    Cristina Florea
    Încă nu există evaluări
  • Lab2 La Programare in Windows
    Lab2 La Programare in Windows
    Document12 pagini
    Lab2 La Programare in Windows
    Andrei Barbalat
    Încă nu există evaluări
  • MMC Lab3 Rap
    MMC Lab3 Rap
    Document4 pagini
    MMC Lab3 Rap
    I LOVE ME
    Încă nu există evaluări
  • Lab 7 Cazacu POO
    Lab 7 Cazacu POO
    Document8 pagini
    Lab 7 Cazacu POO
    Iura Cazacu
    Încă nu există evaluări
  • Laboratorul 1
    Laboratorul 1
    Document9 pagini
    Laboratorul 1
    Tina Cris
    Încă nu există evaluări
  • Lab 1 LFA
    Lab 1 LFA
    Document10 pagini
    Lab 1 LFA
    Eric Semeniuc
    Încă nu există evaluări
  • Somipp Linux 1 UTM
    Somipp Linux 1 UTM
    Document10 pagini
    Somipp Linux 1 UTM
    Cristi Poselețchi
    Încă nu există evaluări
  • Lucrare de Curs LFPC
    Lucrare de Curs LFPC
    Document19 pagini
    Lucrare de Curs LFPC
    Cristik95
    100% (1)
  • Lab2 MN CR-212 V14
    Lab2 MN CR-212 V14
    Document8 pagini
    Lab2 MN CR-212 V14
    Tabureanu Marian
    Încă nu există evaluări
  • Lab 6 Cazacu POO
    Lab 6 Cazacu POO
    Document5 pagini
    Lab 6 Cazacu POO
    Iura Cazacu
    Încă nu există evaluări
  • Lab 4
    Lab 4
    Document4 pagini
    Lab 4
    Viktor Dobrovolschi
    Încă nu există evaluări
  • MMC Lab2
    MMC Lab2
    Document6 pagini
    MMC Lab2
    Mihail Boran
    Încă nu există evaluări
  • Pam 4
    Pam 4
    Document4 pagini
    Pam 4
    violina
    Încă nu există evaluări
  • Lab 3 Somipp
    Lab 3 Somipp
    Document14 pagini
    Lab 3 Somipp
    Augusta Bucataru
    Încă nu există evaluări
  • Examen TIDPP
    Examen TIDPP
    Document3 pagini
    Examen TIDPP
    Rosca Doinita
    Încă nu există evaluări
  • Iepuras Daniel LAB 3 TS
    Iepuras Daniel LAB 3 TS
    Document8 pagini
    Iepuras Daniel LAB 3 TS
    DanuIepuras
    Încă nu există evaluări
  • IoT LL6
    IoT LL6
    Document8 pagini
    IoT LL6
    Anya Mr
    Încă nu există evaluări
  • Amoo 6
    Amoo 6
    Document6 pagini
    Amoo 6
    Mihai Ciubotaru
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document10 pagini
    Lab 1
    Ion Cornea
    Încă nu există evaluări
  • Lab1 Raport VP
    Lab1 Raport VP
    Document5 pagini
    Lab1 Raport VP
    Valeriy Popa
    Încă nu există evaluări
  • Lab 3
    Lab 3
    Document9 pagini
    Lab 3
    Victor Turculet
    100% (1)
  • Lab1 La Programare in Windows
    Lab1 La Programare in Windows
    Document4 pagini
    Lab1 La Programare in Windows
    Micael Coye
    Încă nu există evaluări
  • PPE Lab4-5
    PPE Lab4-5
    Document8 pagini
    PPE Lab4-5
    danielploaia
    Încă nu există evaluări
  • Note de Prelegeri-Laborator - Tema 2
    Note de Prelegeri-Laborator - Tema 2
    Document18 pagini
    Note de Prelegeri-Laborator - Tema 2
    afifo3166
    Încă nu există evaluări
  • Ghid Cunoașterea Elevului Consiliere - Şi Orientare
    Ghid Cunoașterea Elevului Consiliere - Şi Orientare
    Document58 pagini
    Ghid Cunoașterea Elevului Consiliere - Şi Orientare
    Anastasia Gherman
    Încă nu există evaluări
  • Grupele AI 191 SI191 TI1912,3,4,5 FI191 Facultatea C.I.M
    Grupele AI 191 SI191 TI1912,3,4,5 FI191 Facultatea C.I.M
    Document1 pagină
    Grupele AI 191 SI191 TI1912,3,4,5 FI191 Facultatea C.I.M
    Anastasia Gherman
    Încă nu există evaluări
  • Raspunsuri AC
    Raspunsuri AC
    Document10 pagini
    Raspunsuri AC
    Anastasia Gherman
    Încă nu există evaluări
  • Structuri Dinamice de Date
    Structuri Dinamice de Date
    Document2 pagini
    Structuri Dinamice de Date
    Anastasia Gherman
    Încă nu există evaluări
  • Fișă de Lucru 1
    Fișă de Lucru 1
    Document4 pagini
    Fișă de Lucru 1
    Anastasia Gherman
    Încă nu există evaluări
  • Laborator 11 Fizica
    Laborator 11 Fizica
    Document1 pagină
    Laborator 11 Fizica
    Anastasia Gherman
    Încă nu există evaluări
  • Programe Scratch
    Programe Scratch
    Document1 pagină
    Programe Scratch
    Anastasia Gherman
    Încă nu există evaluări