Sunteți pe pagina 1din 5

Ministerul Educației, Culturii și Cercetării

Universitatea Tehnică a Moldovei


Facultatea Calculatoare, Informatică și Microelectronică
Departamentul Ingineria Software și Automatică

RAPORT
Lucrare de laborator Nr.1
la
Programarea Pilotată de Evenimente

Tema: Introducere in Programarea Pilotata de Evenimente

Varianta 10

Chișinău – 2019
Scopul lucrării:
De studiat bazele și principiile de creare a aplicațiilor Windows

Sarcina :
Creați o aplicație Windows, în centrul zonei client al căreia este afișat un mesaj
“Lucrarea de laborator a studentului “ La redimensionarea ferestrei, mesajul
trebuie să fie afișat în centrul zonei client.

Rezultate afișate:

Figura 1 ;

Codul Programului:

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


//

#include "stdafx.h"
#include "WindowsProject5.h"

#define MAX_LOADSTRING 100

// Global Variables:
HINSTANCE hInst; // current instance
WCHAR szTitle[MAX_LOADSTRING]; // The title bar text
WCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name

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


ATOM MyRegist/aerClass(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_WINDOWSPROJECT5, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance);

// Perform application initialization:


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

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

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_WINDOWSPROJECT5));
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT5);
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)
{
switch (message)
{
case WM_COMMAND:
{
int wmId = LOWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
RECT rect;
//HWND hwnd;
if (GetClientRect(hWnd, &rect))
{
SetTextColor(hdc, RGB(0, 0, 0));
SetBkMode(hdc, TRANSPARENT);
DrawTextW(hdc, L"", -1, &rect, DT_CENTER | DT_VCENTER |
DT_SINGLELINE);
}
EndPaint(hWnd, &ps);
}
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;
}

Mersul Lucrarii:

Odata inregistrata clasa ferestri se poate crea o fereastra din aceasta clasa folosind functia CreateWindowEx.

HWND hwnd;

hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"Titlul ferestrei mele",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
NULL, NULL, hInstance, NULL);

*Primul parametru (WS_EX_CLIENTEDGE) este extended windows style.

*Urmatorul este numele clasei (g_szClassName), acesta spune sistemului ce fel de fereastra sa creeze.

*Urmatorul parametru este titlul ferestrei (adica textul ce va apare pe bara de sus a feretrei).

*Parametrul folosit aici: WS_OVERLAPPEDWINDOW este parametrul de stil al ferestrei.

*Urmatorii 2 parametrii (CW_USEDEFAULT, CW_USEDEFAULT) sunt coordonatele X si Y ale coltului stanga-sus al


ferestrei si respectiv latimea si inaltimea ferestrei. Valorile X si Y au fost setate la CW_USEDEFAULT pentru a permite
sistemului windows sa aleaga unde s-o plaseze pe ecran.

*Urmatorile valori (NULL, NULL, g_hInst, NULL) corespund respectiv la handle-rul ferestrei parinte, al meniului,
al instantei aplicatiei precum si un pointer datele de creare a ferestrei. In sistemul windows, ferestrele sunt aranjate
intr-o ierarhie de tip parinte-copili.

Concluzia:

În timpul efectuării de laborator am făcut cunoștința cu Programarea în windows prin intermediu


programului Visual Studio. Am studiat mai amănunt functiile necesare pentru îndeplinirea
Lucrărilor de laborator și crearea aplicaților windows.

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

  • Laboratorul 2 PPE
    Laboratorul 2 PPE
    Document4 pagini
    Laboratorul 2 PPE
    crismaruion
    Încă nu există evaluări
  • Lab 3 Ppe
    Lab 3 Ppe
    Document8 pagini
    Lab 3 Ppe
    Anastasia Gherman
    Încă nu există evaluări
  • Lab 1 PPE
    Lab 1 PPE
    Document4 pagini
    Lab 1 PPE
    King 79
    Încă nu există evaluări
  • Programarea in Windows Lucrare de Laborator Nr. 2
    Programarea in Windows Lucrare de Laborator Nr. 2
    Document3 pagini
    Programarea in Windows Lucrare de Laborator Nr. 2
    Liviu Doloscan
    Î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
  • Examen PW
    Examen PW
    Document71 pagini
    Examen PW
    DorinRotaru
    Încă nu există evaluări
  • PPE Lab4-5
    PPE Lab4-5
    Document8 pagini
    PPE Lab4-5
    danielploaia
    Încă nu există evaluări
  • TW Lab 5
    TW Lab 5
    Document4 pagini
    TW Lab 5
    danielploaia
    Încă nu există evaluări
  • Lab1 Pam
    Lab1 Pam
    Document9 pagini
    Lab1 Pam
    Ion Popescu
    100% (2)
  • Lab2 Somipp
    Lab2 Somipp
    Document6 pagini
    Lab2 Somipp
    Iov Albu
    Î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 Lab5
    TW Lab5
    Document3 pagini
    TW Lab5
    Dan
    Încă nu există evaluări
  • TW Lab4
    TW Lab4
    Document8 pagini
    TW Lab4
    Dan
    Î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
  • Lab2 La Programare in Windows
    Lab2 La Programare in Windows
    Document12 pagini
    Lab2 La Programare in Windows
    Andrei Barbalat
    Î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
  • Somipp SOMIPP5
    Somipp SOMIPP5
    Document6 pagini
    Somipp SOMIPP5
    Damean Alexandra
    Încă nu există evaluări
  • Laboratorul Cercetari
    Laboratorul Cercetari
    Document5 pagini
    Laboratorul Cercetari
    Buinovschi Corneliu
    Încă nu există evaluări
  • TW Lab2
    TW Lab2
    Document4 pagini
    TW Lab2
    Dan
    Încă nu există evaluări
  • PPE Lab7
    PPE Lab7
    Document14 pagini
    PPE Lab7
    danielploaia
    Încă nu există evaluări
  • IoT LL1
    IoT LL1
    Document12 pagini
    IoT LL1
    Anya Mr
    100% (1)
  • Lab.6 FC
    Lab.6 FC
    Document3 pagini
    Lab.6 FC
    Cristina Florea
    Î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
  • Lab 3 Rom
    Lab 3 Rom
    Document6 pagini
    Lab 3 Rom
    Jorca Ţuţuianu
    Încă nu există evaluări
  • SecrieruAndrei Amoo Lab5
    SecrieruAndrei Amoo Lab5
    Document6 pagini
    SecrieruAndrei Amoo Lab5
    andy secrieru
    Încă nu există evaluări
  • Raport AMOO #1
    Raport AMOO #1
    Document8 pagini
    Raport AMOO #1
    Di No
    Încă nu există evaluări
  • Lab1 GC
    Lab1 GC
    Document8 pagini
    Lab1 GC
    Andrei Barbalat
    Încă nu există evaluări
  • Metode Și Modele de Calcul 2
    Metode Și Modele de Calcul 2
    Document6 pagini
    Metode Și Modele de Calcul 2
    I LOVE ME
    Încă nu există evaluări
  • Laboratorul Nr1 La Grafica Pe Calculator Gc.
    Laboratorul Nr1 La Grafica Pe Calculator Gc.
    Document4 pagini
    Laboratorul Nr1 La Grafica Pe Calculator Gc.
    Ion Damaschin
    Încă nu există evaluări
  • Grafica Laborator Nr.2
    Grafica Laborator Nr.2
    Document8 pagini
    Grafica Laborator Nr.2
    Cebotari Ion
    100% (1)
  • IoT LL2
    IoT LL2
    Document9 pagini
    IoT LL2
    Anya Mr
    Încă nu există evaluări
  • Moştenirea Multiplă.
    Moştenirea Multiplă.
    Document4 pagini
    Moştenirea Multiplă.
    romamd555s
    Încă nu există evaluări
  • Lab 7 Somipp
    Lab 7 Somipp
    Document5 pagini
    Lab 7 Somipp
    Augusta Bucataru
    Încă nu există evaluări
  • Laborator-2 TS
    Laborator-2 TS
    Document13 pagini
    Laborator-2 TS
    Сергей Борта
    Î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
  • Grafica Laborator Nr.3
    Grafica Laborator Nr.3
    Document5 pagini
    Grafica Laborator Nr.3
    Cebotari Ion
    100% (2)
  • LFA Lab - 1
    LFA Lab - 1
    Document10 pagini
    LFA Lab - 1
    RoscaFlorin
    100% (1)
  • 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
  • IoT LL4
    IoT LL4
    Document4 pagini
    IoT LL4
    Anya Mr
    Încă nu există evaluări
  • IoT LL6
    IoT LL6
    Document8 pagini
    IoT LL6
    Anya Mr
    Încă nu există evaluări
  • PAM
    PAM
    Document3 pagini
    PAM
    nicu zuza
    Încă nu există evaluări
  • AMOO Lab2.Use Case
    AMOO Lab2.Use Case
    Document5 pagini
    AMOO Lab2.Use Case
    Dorin Gribincea
    Încă nu există evaluări
  • Lab APA 4
    Lab APA 4
    Document12 pagini
    Lab APA 4
    AlionaCrigan
    Încă nu există evaluări
  • SOMIPP Lab 5
    SOMIPP Lab 5
    Document5 pagini
    SOMIPP Lab 5
    Augusta Bucataru
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document10 pagini
    Lab 1
    Ion Cornea
    Încă nu există evaluări
  • Laborator NR.2
    Laborator NR.2
    Document9 pagini
    Laborator NR.2
    Daniil
    Încă nu există evaluări
  • Raport 5 CDE
    Raport 5 CDE
    Document7 pagini
    Raport 5 CDE
    crismaruion
    Încă nu există evaluări
  • Laborator nr6 CDE
    Laborator nr6 CDE
    Document5 pagini
    Laborator nr6 CDE
    Vlad Racu
    Încă nu există evaluări
  • SOMIPP Labs
    SOMIPP Labs
    Document107 pagini
    SOMIPP Labs
    Ionel Boaghe
    Încă nu există evaluări
  • Lab3 SAV
    Lab3 SAV
    Document4 pagini
    Lab3 SAV
    Zeul Hriscei
    Încă nu există evaluări
  • Teoria Sistemelor Nr2
    Teoria Sistemelor Nr2
    Document10 pagini
    Teoria Sistemelor Nr2
    liveplayer
    Î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
  • MMC Laborator 1 UTM
    MMC Laborator 1 UTM
    Document12 pagini
    MMC Laborator 1 UTM
    StasLuchianciuc
    Încă nu există evaluări
  • Lab 6
    Lab 6
    Document4 pagini
    Lab 6
    Егор Казаков
    Încă nu există evaluări
  • MMC Lab3 Rap
    MMC Lab3 Rap
    Document4 pagini
    MMC Lab3 Rap
    I LOVE ME
    Încă nu există evaluări
  • Lab1 Raport VP
    Lab1 Raport VP
    Document5 pagini
    Lab1 Raport VP
    Valeriy Popa
    Încă nu există evaluări
  • PW Lab1
    PW Lab1
    Document5 pagini
    PW Lab1
    Cobilas Vasile
    Încă nu există evaluări
  • Noţiuni Elementare de WinApi
    Noţiuni Elementare de WinApi
    Document28 pagini
    Noţiuni Elementare de WinApi
    Radu Popescu
    Încă nu există evaluări
  • Controale de Tip Fereastră Descendent: Hwndparent Getparent (HWND)
    Controale de Tip Fereastră Descendent: Hwndparent Getparent (HWND)
    Document33 pagini
    Controale de Tip Fereastră Descendent: Hwndparent Getparent (HWND)
    Dead inside
    Î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