0% au considerat acest document util (0 voturi)
77 vizualizări5 pagini

PW Lab1

Acest document prezintă o lucrare de laborator care descrie crearea unei aplicații Windows simple. Documentul explică concepte de bază precum clasele de fereastră, procedurile de fereastră și prelucrarea mesajelor. Listarea programului creează o fereastră care afișează un mesaj în centrul zonei client la redimensionare.

Încărcat de

Cobilas Vasile
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
77 vizualizări5 pagini

PW Lab1

Acest document prezintă o lucrare de laborator care descrie crearea unei aplicații Windows simple. Documentul explică concepte de bază precum clasele de fereastră, procedurile de fereastră și prelucrarea mesajelor. Listarea programului creează o fereastră care afișează un mesaj în centrul zonei client la redimensionare.

Încărcat de

Cobilas Vasile
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

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
[Link] 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.


[Link] = sizeof (wndclass) ; - reprezint dimensiunea structurii.

[Link] = CS_HREDRAW | CS_VREDRAW ; - reprezint stilul clasei, in cazul nostru combin


doi identificatori pentru stilul de clas"

[Link] = 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

[Link] = 0 ;

[Link] = 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.
[Link] = hInstance ; - variabila handle a instanei

[Link] = LoadIcon (NULL, IDI_APPLICATION) ; - definesc o pictogram pentru ferestrele


create pe baza acestei clase

[Link] = LoadCursor (NULL, IDC_ARROW) ; - ncarc un cursor predefinit pentru mouse

[Link] = (HBRUSH) GetStockObject (BLACK_BRUSH) ; - fondul zonei client a


ferestrei va fi colorat cu alb

[Link] = NULL ; - specific meniul ferestrei

[Link] = szAppName ; - specific numele clasei

[Link] = 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

[Link]
De studiat bazele si principiile de creare a aplicaiilor Windows.

[Link]
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.

[Link] 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 ;

[Link] = sizeof (wndclass) ;

[Link] = CS_HREDRAW | CS_VREDRAW ;

[Link] = WndProc ;

[Link] = 0 ;

[Link] = 0 ;

[Link] = hInstance ;

[Link] = LoadIcon (NULL, IDI_APPLICATION) ;

[Link] = LoadCursor (NULL, IDC_ARROW) ;

[Link] = (HBRUSH) GetStockObject (WHITE_BRUSH) ;


[Link] = NULL ;

[Link] = szAppName ;

[Link] = 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 [Link] ;}

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

HDC hdc ;

PAINTSTRUCT ps ;

RECT rect ;

switch (iMsg)

case WM_CREATE :

// PlaySound (TEXT("[Link]"), NULL, SND_FILENAME | SND_ASYNC) ;//

PlaySound (TEXT("[Link]"), 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) ; }

[Link] programului

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

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