Sunteți pe pagina 1din 6

Ministerul Educaţiei al Republicii Moldova

Universitatea Tehnică a Moldovei

Facultatea Calculatoarea Informatică şi Microelectronică

Raport

Disciplina: Programarea în Windows

Lucrarea de laborator Nr. 1

Tema: Aplicaţii Windows

A efectuat: st.gr.TI-131 fr

Mihai Calin

A verificat: Beșliu Victor

Chişinău 2016
Scopul lucrarii:

De studiat bazele si principiile de creare a aplicatiilor Windows.

Sarcina:

Sa se creeze o aplicatie Windows, in centrul zonei de client al careia este afisat un mesaj
“Lucrare de laborator a studentului…”. La redimensionarea ferestrei, mesajul trebuie sa fie afisat in
centrul zonei de client.

Indicatii teoretice:

Windows este o interfata grafica cu utilizatorul (GUI- Graphical user interface), numita uneori si
“interfata vizuala” sau ,, mediu grafic‘’. Toate tipurile de interfete grafice cu utilizator folosesc
elemente grafice afisate intr-o imagine de tip bitmap. Elementele grafice asigura o utilizare mai
eficienta a spatiului de afisare, un mediu mai bogat din punct de vedere vizual pentru transferul de
informatii si posibilitatea de afisarea a rezultatelor. Windows asigura suportul pentru mai mult de 1000
de apeluri de functii pe care le pot folosii aplicatiile. Fiecare functie Windows are un nume sugestiv,
scris atit cu majuscula cit si cu minuscula cum ar fi CreatWindow. Totate functiile windows
importante sunt declarate in fisiere antet. Pricipalul fisier antet se numeste WINDOWS.H. In
programele pentru windows se folosesc apelurile de functie la fel ca si apelurile funciilor de biblioteca
C cum ar fi strlen. Programarea inWindows este un tip de programare orientata pe obiecte. Acest lucru
devine evident daca se ia ca obiectul care va fi folosit cel mai mult in wondows – obiectul ,,fereastra”.
Functiile Windos care simplifica crearea unei aplicatii sunt:

LoadIcon – incarca o pictograma care urmeaza sa fie folosita in program.


LoadCursor – incarca un indicator pnetru mouse, care urmeaza sa fie folosit in program.
GetStockObject – obtine un obiect grafic(in acest caz, o pensula folosita pentru desenarea
fondului ferestrei).
RegisterClassEx – inregistreaza o clasa de fereastra pentru fereastra programului.
CreatWindow – creaza o fereastra pe baza unei clase de fereastra.
ShowWindow – afiseaza o fereastra pe ecran.
UpdateWindow – cererea unei ferestre sa se redeseneze.
GetMessage – preia un mesaj, din coada de mesaje.
TranslateMessage – trimite un mesaj catre o procedura de feresatra.
BeginPain – initiaza o operatie de desenare a ferestrei.
GetClientRect – obtine dimensiunea zonei client a ferestrei.
DrawText – afiseaza un tex;
EndPaint – incheie o operatie de desenare.
PostQuitMessage – inserarea unui mesaj de incheiere in coada de asteptare.
DefWindowProc – executa operatiile prestabilite de prelucrare a mesajelor.
Aceste functii sunt documentate incarti si in sursele incluse de compilator si sunt declarate in fisiere
antet incluse in in fisierul WINDOWS.H.
Indentificatori, notati prin litere majuscule.
In continuare se va lua in considerare folosirea unor identificatori din fisierul antet
WINDOWS.H. Acesti identificatori sunt notati prin intermediul literilor majuscule. Careva din acesti
contin prefixe formate din 2 sau mai multe litere dupa care urmeaza simbolul de subliniere_:
CS_HREDRAW DT_VCENTER WM_CREATE
CS_VREDRAW IDC_ARROW WM_DESTROY
CW_USEDEFAULT IDI_APPLICATION WM_PAINT
DT_CENTER SND_ASYNC WS_OVERLAPPEDWINDOW
DT_SINGLELINE SND_FILENAME

Acestea sunt doar constante. Prefixul indica categoria de baza careia ii apartin asa cum se arata in acest
tabel.

Prefix Categorie
CS Optiunea stiluilui de clasa
IDI Numarul indentificator al pictogramei
IDC Numarul identificator al cursorului
WS Stilul ferestrei
CW Optiunea de creare a ferestei
WM Optiunea ferestrei
SND Optiunea sunetului
DT Otiunea de desen a textului

Tipurile noi de date:


Mai multi identificatori HELLOWIN.C sunt noi tipuri de date; Ei sunt, de asemenea, definiti în
fișierele header folosind instrucțiuni typedef sau #define. A fost inițial conceputi pentru a facilita
trecerea unui program Windows de la versiunea de 16-biți a sistemului de operare, la versiunea de 32
de biti (sau alte tehnologii). Acest lucru nu a fost atiti de simplu cum s-a crezut crezut. Aceste tipuri
noi de date este conventionale. De exemplu, tipul de date UINT, utilizat ca al 2 parametru WndProc -
care este doar un întreg fără semn deoarece Window 95este 32 de biti. Tipu de date PSTR, folosit ca al
3 parametru al functie WinMain, este pointer la un șir de caractere, Char *.. Originea acestor nume
necesită o scurtă excursie în istorie. Când Windows a fost sistem de 16-biți, al treilea parametru
WndProc a fost definit ca WORD, ceea ce a însemnat un întreg scurt 16-bit, iar al patrulea parametru
este definit ca LONG, ceea ce a însemnat un întreg lung 32-bit, si în acest sens prefixul "W" și "L "în
cuvântul" PARAM ". În Windows 95, wParam nume definit ca UINT, și lParam atâta timp ambele
proceduri de fereastră sunt pe 32 de biți. Acest lucru poate fi oarecum incomod, deoarece cuvântul în
Windows 95 este definit ca întreg fara semn pe 16 biți, prin urmare, prefixul "W", în cuvântul
"PARAM" creează unele confuzii. Funcția WndProc returnează o valoare de tip LRESULT. Acesta
este definit simplu ca LONG. Funcția WinMain devine tipul WinAPI (ca orice altă caracteristică a
Windows, care este definită în fișierele header), iar funcția WndProc primește un tip de CALLBACK.
Ambele sunt determinate ca identificator stdcall, care sunt o referire la o anumită secvență de apeluri
de funcții, care are loc între funcționare de sistem și aplicarea acestuia bazat pe Windows. În
HELLOWIN folosit, de asemenea, patru structuri de date definite în fișierele header Windows. Aceste
structuri de date sunt:
structura semnificatie
MSG Structra de mesaje
WNDCLASSEX Sctrura clasei de fereastra
PAINTSTRUCT Structura desenare
RECT Structura dreptunghiului

Primele 2 sunt folosite in WinMain pentru crearea structurilor msg, wc’, urmatoarle 2 sun
folosite in fuctia WndProc pentru crearea structurilor pe, rect. De asemenea sunt 3 identificatori notati
cu litere majuscule utilizati la descrierea deferitor tipuri описателей (handles):

identificator valuare
HINSTANCE Descrierea exemplarului (instance) al programului
HWND Описатель al ferestrei
HDC Описатель контекста устройства 28
Listingul programului:
#include <Windows.h>
#include <tchar.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
TCHAR WinName[] = _T("MainFrame");
int APIENTRY _tWinMain(HINSTANCE This, HINSTANCE Prev, LPTSTR cmd, int mode)
{
HWND hWnd; //descriptor fereastra principala
MSG msg; // structura pentru pastrarea mesajelor
WNDCLASS wc; //clasa de fereastra
wc.hInstance = This;
wc.lpszClassName = WinName; //numele clasei de fereastra
wc.lpfnWndProc = WndProc; //functia ferestrei
wc.style = CS_HREDRAW | CS_VREDRAW; //stilul ferestrei
wc.hIcon = LoadIcon(NULL, IDI_SHIELD); //иконка standart
wc.hCursor = LoadCursor(NULL, IDC_ARROW); //cursorul standart
wc.lpszMenuName = NULL; //lipsa meniului
wc.cbClsExtra = 0; //lipsa datelor suplimnetare ale clasei
wc.cbWndExtra = 0; // lispa datelor suplimentare ale ferestrei
wc.hbrBackground = (HBRUSH) CreateSolidBrush(RGB(255,26,0)); //culoare ferestrei
if(!RegisterClass(&wc)) return 0; // inresgistrearea ferestrei
hWnd = CreateWindow(WinName, _T("Programarea in Windows / Lab_1"), // Заголовок
WS_OVERLAPPEDWINDOW, //stilul ferestrei
CW_USEDEFAULT, // x
CW_USEDEFAULT, // y dimensiunea ferestrei
CW_USEDEFAULT, // width
CW_USEDEFAULT, // Height
HWND_DESKTOP, // descripor fereastrea parinte
NULL, // lipsa meniului
This, //descripor aplicatie
NULL);
MessageBox(NULL," ", MB_OK);
ShowWindow(hWnd, mode); //vizualizarea ferestrei
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg); //// Функция трансляции кодов нажатой клавиши
DispatchMessage(&msg); // treansimterea mesajului functie pricipale
}
return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc; //descriptor orientare text
PAINTSTRUCT ps; //структура, сод-щая информацию о клиентской области
RECT rect;
COLORREF colorText = RGB(1, 100, 255);
switch (message)
{ //prelucrarea mesajelor
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
GetClientRect(hWnd, &rect);
SetTextColor(hdc, colorText);
DrawText(hdc, "Mihai Tamazlicaru, Gr.TI - 133",
-1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY : PostQuitMessage(0); //finalizarea programului
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
}
return 0;
}
Intrebari de control:
1. Care este sarcina pricipala a unei proceduri de fereastra.
2. Pe baza la ce se creeaza o fereastra.
3. Ce este o variabila handle.
4. Ce se intimpla cu mesajele nedescriese in procedura de fereastra, dar plasate in coada de
asteptare
5. Descrieti functiile utilizate in program.
Raspunsuri:
1. Sarcina unei proceduri de fereastra este de a prelucra mesajele trimise catre fereastra.
2. Fereastra este creata in baza clasei de fereastra.
3. Variabila handle este folosita la indicarea ferestrei.
4. Mesajele nedescrie in procedura fereastra sunt intoarse inapoi sistemului oprational.
Concluzie:
In urma efectuarii acestei lucrari de laborator au fost dobindite cunostinte pnetru a crea aplicatii
simple. Am studiat functiile de baza care sunt necesarea la crearea acestei aplicatii. Toate programele
Windows au un aspect asemanator. Programele ocupa o fereastra – o suprafata drepunghiulara de pe
ecran.

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