Documente Academic
Documente Profesional
Documente Cultură
Raport
A efectuat: st.gr.TI-131 fr
Mihai Calin
Chişinău 2016
Scopul lucrarii:
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:
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
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.