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

  • 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
  • LAB1PSR
    LAB1PSR
    Document9 pagini
    LAB1PSR
    Cristian
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document20 pagini
    Lab 1
    Fil Gorea
    Încă nu există evaluări
  • CR-191 MIPI Axenti Alina Lab4
    CR-191 MIPI Axenti Alina Lab4
    Document6 pagini
    CR-191 MIPI Axenti Alina Lab4
    Alina Axenti
    Încă nu există evaluări
  • Laboratorul 1
    Laboratorul 1
    Document9 pagini
    Laboratorul 1
    Tina Cris
    Încă nu există evaluări
  • Laborator NR.1
    Laborator NR.1
    Document13 pagini
    Laborator NR.1
    Daniil
    100% (1)
  • Laboratorul 2
    Laboratorul 2
    Document15 pagini
    Laboratorul 2
    Tina Cris
    Î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
  • PPE Lab3
    PPE Lab3
    Document6 pagini
    PPE Lab3
    DanuIepuras
    Încă nu există evaluări
  • Lab1 La Programare in Windows
    Lab1 La Programare in Windows
    Document4 pagini
    Lab1 La Programare in Windows
    Micael Coye
    Încă nu există evaluări
  • TW Lab2
    TW Lab2
    Document4 pagini
    TW Lab2
    Dan
    Încă nu există evaluări
  • TW Lab5
    TW Lab5
    Document3 pagini
    TW Lab5
    Dan
    Încă nu există evaluări
  • Lab. 2
    Lab. 2
    Document7 pagini
    Lab. 2
    Cristina Florea
    Încă nu există evaluări
  • Lab 1 Docx
    Lab 1 Docx
    Document6 pagini
    Lab 1 Docx
    AlexandruBotnaru
    Încă nu există evaluări
  • Programe Scratch
    Programe Scratch
    Document1 pagină
    Programe Scratch
    Anastasia Gherman
    Încă nu există evaluări
  • Lucrare de Laborator Nr.4
    Lucrare de Laborator Nr.4
    Document10 pagini
    Lucrare de Laborator Nr.4
    Dutca Alexandru
    Încă nu există evaluări
  • BDC Lucrare de Curs
    BDC Lucrare de Curs
    Document37 pagini
    BDC Lucrare de Curs
    Vladislav Crivenco
    Încă nu există evaluări
  • TW Lab4
    TW Lab4
    Document8 pagini
    TW Lab4
    Dan
    Încă nu există evaluări
  • Laboratorul 3
    Laboratorul 3
    Document12 pagini
    Laboratorul 3
    Tina Cris
    Încă nu există evaluări
  • Ppe 1
    Ppe 1
    Document5 pagini
    Ppe 1
    Victor Lungu
    Încă nu există evaluări
  • Laboratorul 2 PPE
    Laboratorul 2 PPE
    Document4 pagini
    Laboratorul 2 PPE
    crismaruion
    Încă nu există evaluări
  • Lab 1 PPE
    Lab 1 PPE
    Document4 pagini
    Lab 1 PPE
    King 79
    Î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
  • TW Lab 5
    TW Lab 5
    Document4 pagini
    TW Lab 5
    danielploaia
    Î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
  • PPE Lab7
    PPE Lab7
    Document14 pagini
    PPE Lab7
    danielploaia
    Încă nu există evaluări
  • ASDN2
    ASDN2
    Document6 pagini
    ASDN2
    Viktor Dobrovolschi
    Încă nu există evaluări
  • Examen PW
    Examen PW
    Document71 pagini
    Examen PW
    DorinRotaru
    Încă nu există evaluări
  • SOMIPP Lab4
    SOMIPP Lab4
    Document7 pagini
    SOMIPP Lab4
    Dan
    Încă nu există evaluări
  • Somipp Linux 2 UTM
    Somipp Linux 2 UTM
    Document7 pagini
    Somipp Linux 2 UTM
    Cristi Poselețchi
    Î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
  • Laborator 1 Cucu Eugeniu
    Laborator 1 Cucu Eugeniu
    Document5 pagini
    Laborator 1 Cucu Eugeniu
    Cucu Eugen
    Încă nu există evaluări
  • Grafica Laborator Nr.3
    Grafica Laborator Nr.3
    Document5 pagini
    Grafica Laborator Nr.3
    Cebotari Ion
    100% (2)
  • Lab 2 MMC Boj
    Lab 2 MMC Boj
    Document12 pagini
    Lab 2 MMC Boj
    Andrian Brinzan
    Încă nu există evaluări
  • SecrieruAndrei Amoo Lab5
    SecrieruAndrei Amoo Lab5
    Document6 pagini
    SecrieruAndrei Amoo Lab5
    andy secrieru
    Încă nu există evaluări
  • LFA Lab - 1
    LFA Lab - 1
    Document10 pagini
    LFA Lab - 1
    RoscaFlorin
    100% (1)
  • AI-191 Medinschi Ion SO4
    AI-191 Medinschi Ion SO4
    Document5 pagini
    AI-191 Medinschi Ion SO4
    Carolin
    Încă nu există evaluări
  • Lab1 Pam
    Lab1 Pam
    Document9 pagini
    Lab1 Pam
    Ion Popescu
    100% (2)
  • Laborator nr.3 POO
    Laborator nr.3 POO
    Document6 pagini
    Laborator nr.3 POO
    MARYAN Pătru
    Încă nu există evaluări
  • Lab7 POO
    Lab7 POO
    Document10 pagini
    Lab7 POO
    Grosu Elena
    Încă nu există evaluări
  • SOMIPP Labs
    SOMIPP Labs
    Document107 pagini
    SOMIPP Labs
    Ionel Boaghe
    Î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
  • IoT LL6
    IoT LL6
    Document8 pagini
    IoT LL6
    Anya Mr
    Încă nu există evaluări
  • Lab2 Somipp
    Lab2 Somipp
    Document6 pagini
    Lab2 Somipp
    Iov Albu
    Încă nu există evaluări
  • Lab 2 Apa
    Lab 2 Apa
    Document12 pagini
    Lab 2 Apa
    Artur Kingsman
    Încă nu există evaluări
  • A1
    A1
    Document11 pagini
    A1
    Amarfii Sergiu
    Încă nu există evaluări
  • Moştenirea Multiplă.
    Moştenirea Multiplă.
    Document4 pagini
    Moştenirea Multiplă.
    romamd555s
    Încă nu există evaluări
  • Amoo 6
    Amoo 6
    Document6 pagini
    Amoo 6
    Mihai Ciubotaru
    Încă nu există evaluări
  • POO Lab7
    POO Lab7
    Document6 pagini
    POO Lab7
    Dani Ela
    Încă nu există evaluări
  • Teoria Sistemelor Nr2
    Teoria Sistemelor Nr2
    Document10 pagini
    Teoria Sistemelor Nr2
    liveplayer
    Încă nu există evaluări
  • PCAD
    PCAD
    Document4 pagini
    PCAD
    Fiodor Ciumac
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document10 pagini
    Lab 1
    Ion Cornea
    Încă nu există evaluări
  • Lab 4 BDC
    Lab 4 BDC
    Document8 pagini
    Lab 4 BDC
    Ion Popescu
    0% (1)
  • Lab 4 Apa
    Lab 4 Apa
    Document21 pagini
    Lab 4 Apa
    crismaruion
    Încă nu există evaluări
  • Raspunsuri AC
    Raspunsuri AC
    Document10 pagini
    Raspunsuri AC
    Anastasia Gherman
    Încă nu există evaluări
  • LFA Lab1
    LFA Lab1
    Document8 pagini
    LFA Lab1
    Dan
    Încă nu există evaluări
  • Rezolvarea Numerica A Sistemelor de Ecuatii Liniare
    Rezolvarea Numerica A Sistemelor de Ecuatii Liniare
    Document8 pagini
    Rezolvarea Numerica A Sistemelor de Ecuatii Liniare
    Valentin I. Marius
    Încă nu există evaluări
  • Lab 3
    Lab 3
    Document4 pagini
    Lab 3
    Rosca Doinita
    Î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)
  • PPE Lab4-5
    PPE Lab4-5
    Document8 pagini
    PPE Lab4-5
    danielploaia
    Î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 nr.1 APA
    Laborator nr.1 APA
    Document5 pagini
    Laborator nr.1 APA
    Anastasia Gherman
    Încă nu există evaluări
  • Intrebari Lab 18
    Intrebari Lab 18
    Document3 pagini
    Intrebari Lab 18
    Anastasia Gherman
    100% (1)
  • Laborator 11 Fizica
    Laborator 11 Fizica
    Document1 pagină
    Laborator 11 Fizica
    Anastasia Gherman
    Încă nu există evaluări