Sunteți pe pagina 1din 5

Ministerul Educaiei al Republicii Moldova

Universitatea Tehnic a Moldovei

Facultatea Automatic i Tehnologii Informationale

Raport
La disciplina: Programarea in Windows

Lucrare de laborator Nr.1

Tema: Aplicatii Windows

A efectuat:

A verificat: lector universitar


Beliu Victor
\\

Chiinu 2017
1.Rspuns la ntrebri
1. Care este sarcina principal a procedurii de fereastr?
Sarcina principala este de a crea o fereastra in Interfata Garfica a Utilizatorului (GUI)

2. Pe baza la ce se creeaz o fereastr?


Fereastra se creaza pe baza unei clase de fereastra care este existenta in functiile sistemului de operare. Clasa
specific procedura de fereastr care prelucreaz mesajele trimise ctre fereastr. Folosirea unei clase de
fereastr permite ca pe baza aceleiai clase s se creeze mai multe ferestre care, ca urmare, folosesc aceeai
procedur de fereastr. De exemplu, toate butoanele din toate programele pentru Windows sunt create pe baza
aceleiai clase de fereastr. Aceast clas are o procedur de fereastr (aflat ntr-una dintre bibliotecile cu
legturi dinamice ale sistemului de operare) care prelucreaz mesajele trimise ctre ferestrele butoanelor.

3. Descriei cmpurile clasei de fereastr.


wndclass.cbSize = sizeof (wndclass) ; - reprezint dimensiunea structurii.

wndclass.style = CS_HREDRAW | CS_VREDRAW ; - reprezint stilul clasei, in cazul nostru combin


doi identificatori pentru stilul de clas"

wndclass.lpfnWndProc = WndProc ; - aceast instruciune stabilete ca procedur de fereastr funcia


WndProc. Aceast procedur va prelucra toate mesajele trimise ctre toate ferestrele create pe baza acestei clase
de fereastr

wndclass.cbClsExtra = 0 ;

wndclass.cbWndExtra = 0 ; - rezerv un spaiu suplimentar n structura clasei i n structura ferestrei,


pstrat n interiorul sistemului de Windows. Un program poate s utilizeze spaiul suplimentar n scopuri
proprii.
wndclass.hInstance = hInstance ; - variabila handle a instanei

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; - definesc o pictogram pentru ferestrele


create pe baza acestei clase

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; - ncarc un cursor predefinit pentru mouse

wndclass.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH) ; - fondul zonei client a


ferestrei va fi colorat cu alb

wndclass.lpszMenuName = NULL ; - specific meniul ferestrei

wndclass.lpszClassName = szAppName ; - specific numele clasei

wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ;

4. Ce este o variabil handle?


Orice fereastr din Windows are o variabil handle. Programul folosete variabila handle pentru indicarea
ferestrei. Multe funcii Windows au un parametru hwnd, care specific fereastra la care se refer funcia
respectiv. Dac un program creeaz mai multe ferestre, fiecare are o variabil handle diferit. Variabila handle a
unei ferestre este una dintre cele mai importante variabile folosite n Windows.

5. Ce se ntmpl cu mesajele nedescrise n procedura de fereastr, dar plasate n coada de


mesaje?
Daca mesajele nu sunt descrise in procedura de fereastra, ele se intorc inapoi la sistemul de operare si decizia
este luata de catre sistemul de operare.
6. Descriei funciile utilizate n program.
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; - Un program pentru Windows
poate conine mai multe proceduri de fereastr. O procedur de fereastr este ntotdeauna asociat unei clase de
fereastr

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int


iCmdShow) functia WinMain este principala functie a programului;

CreateWindow creaza o fereastra ShowWindow (hwnd, 1) ; - afiseaza dereastra carei ii corespunde variabila
handle hwnd ;

UpdateWindow (hwnd) ; - reinoieste fereastra carei ii corespunde variabila handle hwnd

2.Scopul
De studiat bazele si principiile de creare a aplicaiilor Windows.

3.Condiia
Creai o aplicaie windows, in centrul zonei client al creia este afiat un mesaj Lucrarea de laborator a
studentului. La redimensionarea ferestrei, mesajul trebuie s fie afiat n centrul zonei client.

4.Listingul programului
#include <windows.h>

#include <MMSystem.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{static char szAppName[] = "HelloWin" ;

HWND hwnd ;

MSG msg ;

WNDCLASSEX wndclass ;

wndclass.cbSize = sizeof (wndclass) ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc = WndProc ;

wndclass.cbClsExtra = 0 ;

wndclass.cbWndExtra = 0 ;

wndclass.hInstance = hInstance ;

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;

wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;


wndclass.lpszMenuName = NULL ;

wndclass.lpszClassName = szAppName ;

wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ;

RegisterClassEx (&wndclass) ;

hwnd = CreateWindow (szAppName, // window class name

"Labroratorul nr.1", // window caption

WS_OVERLAPPEDWINDOW, // window style

CW_USEDEFAULT, // initial x position

CW_USEDEFAULT, // initial y position

CW_USEDEFAULT, // initial x size

CW_USEDEFAULT, // initial y size

NULL, // parent window handle

NULL, // window menu handle

hInstance, // program instance handle

NULL) ; // creation parameters

ShowWindow (hwnd, iCmdShow) ;

UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0))

{TranslateMessage (&msg) ;

DispatchMessage (&msg) ;}

return msg.wParam ;}

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)

HDC hdc ;

PAINTSTRUCT ps ;

RECT rect ;

switch (iMsg)

case WM_CREATE :

// PlaySound (TEXT("vasea.wav"), NULL, SND_FILENAME | SND_ASYNC) ;//

PlaySound (TEXT("vasea.wav"), NULL,SND_NODEFAULT ) ;


return 0 ;

case WM_PAINT :

hdc = BeginPaint (hwnd, &ps) ;

GetClientRect (hwnd, &rect) ;

FillRect(GetDC(hwnd),&rect, CreateSolidBrush(RGB(200,111,200))) ;

SetTextColor(hdc,RGB(2,80,40));

SetBkMode(hdc,TRANSPARENT);

DrawText (hdc, "Lucrarea de laborator a studentului gr. TI ", -1, &rect,DT_SINGLELINE | DT_CENTER |
DT_VCENTER) ;

EndPaint (hwnd, &ps) ;

return 0 ;

case WM_DESTROY :

PostQuitMessage (0) ;

return 0 ; }

return DefWindowProc (hwnd, iMsg, wParam, lParam) ; }

5.Rezultatul programului

6.Concluzia
n urma efecturii acestei lucrri am fcut cunotin cu crearea aplicaiilor Windows, crearea ferestrelor,
prelucrarea mesajelor si modelarea lor.