You are on page 1of 2

An.II / Sem.

I
Curs 8 Programare Interfeţe Grafice
.

Programare Interfeţe Grafice


Miercuri-7.12.2005
Curs 8 (PIG8)

Caseta de dialog şi meniul

Casetele de dialog reprezintă modalitatea cea mai simplă de a realiza o interfaţă cu


utilizatorul pentru dialogul cu aplicaţia. Ea se proiectează cu editorul de resurse. La proiectare
se poate alege din Toolbar tipul controalelor.
Ca editor de resurse se poate folosi: Apple Studio, Resource Workshop sau mediile
integrate IDE ca cele VC++ sau Borland C++ de la versiunea 4.5 în sus.
Vom crea în continuare o casetă de dialog ce va conţine numai câmpuri statice, referitoare la
nume, prenume, pasiuni etc. Codul prezentat este generat automat, şi arată astfel:
#include "resource.h"
#include "windows.h"
IDD_DIALOG1 DISCARDABLE 0,0,205,115 //se stabilesc dimensiunile
STYLE DS_MODALFRAME|WS_POPUP|WS_VISIBLE|WS_CAPTION|
WS_SYSMENUCAPTION "Dialog"
FONT 8,"MS Sans Sherif"
BEGIN
DEFPUSHBUTTON "Ok", IDOK,148,7,50,14
PUSHBUTTON "Abandon"m IBCANCEL, 148,24, 50,34
GROUPBOX "Persoana", IDC_STATIC, 15,10,125,63
EDITTEXT IDC_EDIT1 62,21,72,13, ES_AUTOSCROLL
EDITTEXT IDC_EDIT2 62,37,72,13, ES_AUTOSCROLL
EDITTEXT IDC_EDIT3 74,55,60,13, ES_AUTOSCROLL
LTEXT "Nume:", IDC_STATIC, 24,25,38,8
LTEXT "Prenume:", IDC_STATIC, 24,41,38,8
LTEXT "Pasiuni:", IDC_STATIC, 24,56,38,8
GROUPBOX "Static", IDC_STATIC, 17,18,123,30
CONTOL "Radio1", IDC_RADIO1, "Button", BS_AUTORADIOBUTTON,
26,86,29,10
CONTOL "Radio2", IDC_RADIO2, "Button", BS_AUTORADIOBUTTON,
26,95,35,10
END
meniu MENU DISCARDABLE
BEGIN
POPUP "Meniu"
BEGIN
MENUITEM "Afisare cutie dialog", IDM_AFISAREDIALOG //o optiune din
meniu
MENUITEM SEPARATOR //separator, e o linie de separare
MENUITEM "Iesire", IDM_IESIRE
END
END
Acest cod este memorat în fişierul de resurse *.rc.
Obs: Funcţia WinMain() se va pune în fişierul winmain.c. codul are funcţia callback() şi
WndProc care creează fereastra principală a aplicaţiei.

char APPNAME[]="Program ce foloseste caseta de dialog";


HINSTANCE hInst; //reprezinta instanta programului, adica un program se deschide
1 din 2
An.II / Sem. I
Curs 8 Programare Interfeţe Grafice
.
// de mai multe ori, fiecare reprezentand o instanta a aplicatiei
#include "winmain.c"
#include "resource.h"
BOOL CALLACK DialogProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM
lParam);
long FAR PASCAL WndProc(HWND hWnd, UINT mesages, WPARAM wParam, LPARAM
lParam)
{
switch (mesages)
{
case WM_COMMAND:
switch(wParam)
{
case IDM_AFISARE_DIALOG:
DialogBox(hInst, IDC_DIALOG, hWnd, DialogProc);
break;
}
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, mesages, wParam, lParam);
}
return 0L;
}
BOOL CALLBACK DialogProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM
lParam)
{
switch (msg)
{
case WM_COMMAND:
switch (wParam)
{
case IDOK:
EndDialog(hDlg,TRUE);
break;
case IDCANCEL:
EndDialog(hDlg, FALSE);
break;
}
default:
return FALSE;
}

Funţia ferestrei principale WinMain() tratează mesajul primit de la meniu, mesaj trimis la
acţiunea de selectare a unei opţiuni din acel meniu. Funcţie DialogProc() procesează mesajele
provenite de la controalele de pe suprafaţa sa.
Deci funcţia WinMain() este locul de intrare în orice program sun Windows, este apelată
de SO, şi ţine cont de următoarele scopuri: înregistrează clasa fereastră, creează fereastra
principală cu CreateWindow() şi conţine bucla de aşteptare.

===//===

2 din 2