Sunteți pe pagina 1din 17

Programare orientat obiect

1
Lucrare laborator 1
MEDIUL DE DEZVOLTARE DEVELOPER STUDIO.
CASETE DE DIALOG
I UTILIZAREA CONTROALELOR DE TIP BUTON

Programarea orientat pe obiecte este o metod de programare n care programele sunt
organizate ca i colecii de obiecte cooperante, fiecare dintre ele reprezentnd o instan a unei
clase, iar clasele sunt membre ale unei ierarhii de clase, corelate ntre ele prin relaii de
motenire.
Limbajul C++ este unul dintre cele mai utilizate limbaje de programare orientate pe
obiecte; compilatoare, biblioteci i instrumente de dezvoltare a programelor C++ sunt disponibile
att pentru calculatoarele personale ct i pentru cele mai dezvoltate sisteme i staii de lucru.
n cadrul laboratorului de POO se va folosi Microsoft Visual C++ 9.0 rulnd sub sistemul
de operare Windows XP.
n aceast lucrare de laborator, vei ncepe s nvai cteva dintre conceptele de baz ale
limbajului C++ i vei crea un program simplu n mod consol.
Programele scrise folosind Visual C++ sunt compilate ceea ce nseamn c un fiier text
denumit fiier surs este convertit ntr-un program de sine stttor care poate fi rulat n afara
mediului Visual C++. Aproape toate sistemele de dezvoltare C++ compileaz programe
executabile. Unele limbaje de programare, cum ar fi anumite versiuni de BASIC, creaz
programe care pot rula numai n mediul de dezvoltare. Alte limbaje, cum ar fi Smalltalk, ruleaz
n corelaie cu o bibliotec de rulare, care asist programul aflat n execuie. Dimpotriv,
programele scrise folosind Visual C++, pot fi scrise i compilate ntr-un program executabil.
Acel program poate fi apoi executat pe orice calculator care dispune de un sistem de operare
Windows.
n majoritatea sistemelor de dezvoltare C++, un program C++ parcurge mai multe etape
pn la transformarea sa ntr-un program executabil:
Se creaz unul sau mai multe fiiere surs, care conin textul unui program C++ (fiiere
cu extensia .cpp).
Se compileaz programul folosind un compilator de C++. Aceast etap poate consta, de
fapt, din mai multe comenzi de compilare a fiierelor surs n fiiere intermediare,
cunoscute i sub numele de fiiere n cod obiect object code (fiiere cu extensia .obj).
Fiierele n cod obiect sunt legate la un loc folosind un instrument denumit program de
editare a legturilor linker.
Acum se poate lansa programul executabil (fiier cu extensia .exe).
Cu ceva timp n urm, majoritatea sistemelor de dezvoltare pretindeau ca fiecare din aceste
etape s fie executat fie cu produse separate, din linia de comand, fie cu ajutorul unui
instrument care determin fiierele care necesit actualizarea. Folosind instrumente moderne,
precum Visual C++, alctuirea unui program este cu mult mai simpl. Mediul Visual C++
permite editarea, compilarea, executarea i depanarea unui program n interiorul aceluiai mediu.
Toate etapele prezentate mai sus sunt supervizate de mediul de dezvoltare Visual C++ (ntlnit i
sub acronimul IDE Integrated Development Environment, sau Developer Studio sau Visual
Studio), ceea ce permite utilizatorului s se concentreze asupra scrierii programului, n loc de a
da atenie unei mulimi de detalii.


1. Microsoft Visual C++ 9.0

Lansarea mediului Visual C++ se poate face accesnd Shortcut-ul de pe Desktop care
este nsoit de icon-ul ce simbolizeaz semnul infinit n culorile rou, galben, verde i albastru
(MSDEV Microsoft Developer Studio). La lansarea mediului Visual C++ este afiat fereastra
Visual Studio. Visual Studio este numele dat interfeei cu utilizatorul a lui Visual C++ i va
reprezenta suprafaa de lucru.
Programare orientat obiect

2
Visual Studio este numele dat interfeei cu utilizatorul a lui Visual C++, interfa ce arat
conform figurii 1.
Cnd se folosete Visual C++ pentru dezvoltarea unui program, majoritatea activitii
este privit drept un proiect. Fiecare proiect stocheaz informaia necesar crerii unui program
n C++. n funcie de tipul i de complexitatea programului, proiectul se poate reduce la cteva
fiiere sau poate include sute de fiiere.
Creai un proiect astfel:
Selectai comanda New a meniului File pentru a crea un nou proiect; caseta de dialog New va
fi afiat.
Specificai tipul proiectului pe care l creai din pagina Projects a casetei de dialog New (din
lista proiectelor posibile alegei Win32 Console Application).
n caseta Project Name din caseta de dialog New specificai numele proiectului (indicaie:
personalizai proiectele pe care le creai).
Folosii caseta Location pentru a preciza directorul n care vor fi plasate fiierele proiectului
(C:\POO\Studenti\.....). Calea afiat iniial n caseta Location depinde de opiunile exprimate
la instalarea mediului Visual C++.Pentru a modifica aceast locaie, fie editai calea explicit,
fie apsnd butonul aflat n partea dreapt a casetei Location urmrii ierarhia de directoare
pn n subdirectorul dorit. Locaia implicit se bazeaz pe numele proiectului i este
C:\Program Files\Microsoft Visual Studio\My Projects\numele proiectului.
Dup stabilirea opiunilor din cadrul casetei de dialog New, apsarea butonului OK iniiaz
generarea proiectului. n cazul unei aplicaii de tip Win32 Console Application, procesul de
generare a proiectului conine un singur pas n care trebuie s alegei ce tip de aplicaie n mod
consol vei crea. Alegei An empty project. La apsarea butonului Finish este afiat o
caset de dialog care v informeaz despre crearea unui schelet de proiect vid, adic nu vor
fi create sau/i adugate fiiere suplimentare la proiect. Este precizat de asemenea calea ctre
directorul proiectului. n acest moment, putei vizualiza urmnd aceast cale fiierele create.
nchidei mediul de dezvoltare.


2. Mediul Developer Studio

Mediul de dezvoltare Developer Studio utilizat de Visual C++ pare destul de complex la
prima vedere (peste 100 de opiuni de meniu i aproximativ tot attea butoane de pe bara de
instrumente care pot fi selectate). Multe dintre acestea conduc la casete de dialog complexe i la
pagini de proprieti care conin numeroase opiuni. Funcionalitatea att de bogat oferit de
Developer Studio este justificat de faptul c acest mediu este utilizat pe scar larg pentru a
produce aplicaii complexe, profesionale. n cadrul acestui laborator, vei nva o parte din
ntreaga funcionalitate.
Lansai din nou Visual C++. Deschidei proiectul creat anterior astfel:
Din meniul File, selectai proiectul din cadrul listei Recent Workspaces.
Pentru a deschide un proiect care nu figureaz n lista Recent Workspaces, selectai
Open Workspace din meniul File. Pe ecran este afiat fereastra Open Workspace n
care accesai directorul folosit pentru proiectul creat. Selectai din list fiierul care
poart numele proiectului i extensia .dsw i alegei Open.
Indiferent de metoda utilizat , proiectul ar trebui s fie acum deschis, cu titlul su afiat
n bara de titlu a ferestrei Developer Studio. Mediul de lucru a reinut unde ai rmas i afiarea
este identic cu cea de la nchiderea mediului de dezvoltare.
Afiarea cuprinde trei ferestre: cea a spaiului de lucru al proiectului, cea pentru editare i
cea de ieire.
Fereastra spaiului de lucru al proiectului n partea stng, este o fereastr andocabil.
Exist mai multe astfel de ferestre (fereastra Output n partea de jos este una dintre ele), unele
aprnd n modul depanare. Pentru a comuta ntre modul liber i modul andocabil pentru o
fereastr, efectuai un dublu click pe bara de titlu a ferestrei respective. Fereastra spaiului de
Programare orientat obiect

3
lucru al proiectului poate fi nchis prin efectuarea unui click pe butonul de nchidere, aflat n
colul dreapta sus. Redeschiderea ferestrei se realizeaz prin selectarea comenzii Workspace din
meniul View. Toate ferestrele andocabile au comportamente similare. Fereastra spaiului de
lucru al proiectului permite vizualizarea acestuia din mai multe perspective. Dup ce ai deschis
proiectul, in partea inferioar a spaiului de lucru, sunt disponibile dou pagini: ClassView i
FileView. Paginile din partea inferioar a ferestrei mpart proiectul n componente logice.
Efectuai click pe o pagin pentru a vizualiza reprezentarea corespunztoare. Fiecare
reprezentare afieaz o structur arborescent de elemente care reprezint componente ale
proiectului. Putei s expandai sau s condensai elementele arborelui efectund click pe
simbolul plus (+) sau minus (-) alturat n partea stng a acestora. Pentru c ai creat o aplicaie
n mod consol ca un proiect gol nici un fiier nu exist n acest moment n proiect i nu poate fi
vizualizat.

Elementele de baz ale unui proiect n C++
Programul creat are multe n comun cu programe C++ de dimensiuni mult mai mari:
Prima linie din program este un mesaj ctre compilator de a include i un alt fiier
la compilarea fiierului creat. Instruciunea #include cere compilatorului s caute
fiierul iostream.h i s-l introduc n fiierul surs.
Urmtoarea linie reprezint nceputul funciei principale (main). Toate
programele n C++ constau dintr-una sau din mai multe funcii. Funcia denumit
main este locul n care ncepe execiia programului, motiv pentru care toate
programele n C++ trebuie s aib o funcie denumit main. Funcia returneaz
(return) o valoare ntreag (int) sistemului de operare la ncheierea executrii.
Funcia nu accept parametrii. Sistemul de operare folosete valoarea returnat de
funcia main pentru a afla dac programul a fost executat cu succes. Este posibil
returnarea ctre sistemul de operare a unor valori care indic reuit sau eec.


3. Casete de dialog

Caseta de Dialog este una dintre cele mai redutabile arme din arsenalul oricrui
dezvoltator sub Windows datorit utilitii sale ntr-o multitudine de situaii. Casetele de Dialog
pot fi utilizate pentru simpla afiare de mesaje ctre utilizator, dar forma cea mai uzual n care
se folosesc casetele de Dialog este cea prin care utilizatorii au posibilitatea s introduc
informaii pentru aplicaie. n mod normal, utilizatorul poate s confirme sau s anuleze datele
introduse. Anularea nchide pur i simplu caseta de Dialog, ca i cum aceasta nu ar fi fost
deschis; confirmarea duce la efectuarea unei aciuni care implic datele introduse, dup care, de
multe ori, ns nu ntotdeauna, nchide caseta de Dialog.
Crearea casetelor de Dialog folosite n aplicaiile Visual C++ se realizeaz n dou etape.
Prima etap este faza de proiectare, care presupune crearea machetei pentru caseta de Dialog i
adugarea controalelor necesare. Cea de a doua etap este faza de programare, care presupune
stabilirea de legturi ntre caseta de Dialog i controalele sale, pe de o parte, i clasele i funciile
din codul C++, pe de alt parte. Prima faz (faza de proiectare) poate fi parcurs fr a scrie nici
o linie de cod. Pentru a realiza o aplicaie, trebuie mai nti creat un proiect, care va fi folosit
pentru administrarea tuturor elementelor care compun un program Visual C++ i care au ca
rezultat o aplicaie Windows.
Dei este posibil crearea i proiectarea de casete de Dialog n Visual Studio fr a crea
n prealabil un proiect, se obinuiete mai degrab adugarea i editarea casetelor de Dialog n
cadrul unui proiect existent. Mai nti se va folosi AppWizard pentru a crea un nou proiect
corespunztor unei aplicaii de tip Dialog.
AppWizard este un instrument puternic al crui scop este generarea unui nou proiect
funcional. AppWizard permite precizarea mai multor caracteristici personalizabile pe care le
Programare orientat obiect

4
implementeaz apoi n fiierele surs pe care le creeaz. Proiectele generate cu AppWizard sunt
complet funcionale, ele putnd fi asamblate i rulate fr a fi nevoie de cod adiional.
Crearea unui nou proiect pentru o aplicaie de tip Dialog, presupune parcurgerea
urmtorilor pai:
Se efectueaz clic pe meniul File i se selecteaz New;
Se selecteaz pagina Projects, (n cazul n care aceast pagin nu este deja
selectat) i este afiat o list cu toate tipurile de proiecte care se pot crea, de
exemplu la selectarea opiunii MFC AppWizard (exe), se va avea ca rezultat un
program executabil Windows standard. Visual C++ este nsoit de biblioteca de clase
de baz Microsoft (Foundation Classes). Biblioteca MFC reprezint o mulime de
clase C++ predefinite. AppWizard genereaz un schelet de aplicaie prin crearea unor
clase derivate din clasele aflate n biblioteca MFC.
Orice proiect are nevoie de un nume, care se va specifica prin execuia unui clic pe
caseta Project Name i se introduce numele proiectului;
Caseta Location este folosit pentru precizarea directorului n care vor fi plasate fiierele
proiectului. Calea afiat iniial n caseta Location depinde de opiunile exprimate la instalarea
lui Visual C++, pentru modificarea ei, fie se va edita calea explicit, fie se va efectua un clic pe
butonul aflat n partea dreapt a casetei.
Dup stabilirea opiunilor din cadrul
casetei de Dialog New, se va da clic pe
OK, aprnd caseta de Dialog MFC
AppWizard Step1 care va genera tipul
de program dorit.
Aceast caset de Dialog ofer trei opiuni
pentru tipul de interfa a aplicaiei:
Single document (SDI), un program
care controleaz un singur
document la un moment dat;
Multiple documents (MDI), un
program care poate controla n
acelai timp mai multe documente
diferite;
Dialog Based, un program care are drept
fereastr principal de afiare o caset de
Dialog.
Dup selectarea unuia dintre aceste tipuri de
aplicaie, utilizatorului i se solicit mai multe informaii
despre noul program, putndu-se de asemenea selecta
limba care va fi folosit pentru resurse.
Se va selecta butonul de opiune Dialog
Programare orientat obiect

5
Based;
Se va efectua clic pe Next pentru a avansa la caseta de Dialog MFC AppWizard-Step
2.
n acest pas exist posibilitatea personalizrii a anumitor elemente ale aplicaiei chiar nainte ca
aceasta s fie creat. Efectul selectrii i deselectrii diferitelor caracteristici vizuale poate fi
vzut n diagramele aflate n partea stng. Se poate totodat s se modifice titlul casetei de
Dialog principale. Alte opiuni privesc activarea suportului pentru faciliti mai avansate.
Se va efectua un clic pe Next, pentru a trece la caseta de Dialog MFC AppWizard-
Step3.
Se poate solicita ca AppWizard s includ
comentarii n cadrul fiierelor surs, care pot ajuta la
nelegerea codului generat i arat unde trebuie plasat
codul adiional.
n aceast etap apare ntrebarea dac se dorete ca
AppWizard s adauge comentarii la codul pe care l
genereaz. Comentariile sunt de natur explicativ i ajut
la nelegerea locului unde trebuie adugat propriul cod. Se
selecteaz Yes, Please pentru a include comentarii.
n mod implicit, AppWizard creeaz un program
care folosete o versiune DLL (dynamic link library - bibliotec cu legare dinamic) a MFC.
Acest lucru este avantajos deoarece fiierul executabil (.exe) rezultat din proiect va fi mai mic,
pentru c toate funciile MFC necesare vor fi cutate n
alte fiiere de pe disc.
Se va efectua un clic pe Next pentru a trece la
caseta de Dialog MFC AppWizard-Step 4.
n aceast ultim etap se poate vedea numele
claselor i fiierelor care vor fi generate de AppWizard.
Dac aceste nume nu satisfac, se pot modifica prin
intermediul casetelor de editare din partea inferioar a
casetei de Dialog.
Se va efectua clic pe Finish.
Se d clic pe OK din caseta de
Dialog New Project Information,
iar AppWizard va crea noul
proiect i fiierele surs ale
acestuia.
n acest moment, dei nu s-a vzut
nici mcar o linie de cod surs C++, exist o
aplicaie Windows complet i perfect
funcional.
Seciunea afiat de ctre Visual
Studio n partea stng se numete seciunea
spaiului de lucru. Fereastra spaiului de
lucru al proiectului este o fereastr
andocabil. Exist mai multe astfel de ferestre (fereastra Output este una dintre ele), unele
aprnd n modul depanare. Pentru a comuta ntre modul liber i modul andocabil pentru o
fereastr, efectuai un dublu clic pe bara de titlu a respectivei ferestre. Fereastra spaiului de lucru
al proiectului poate fi nchis prin efectuarea unui clic pe micul buton de nchidere aflat n colul
dreapta sus. Redeschiderea ferestrei se realizeaz prin selectarea comenzii Workspace din meniul
View. Toate ferestrele andocabile au comportamente similare.
Programare orientat obiect

6
Fereastra spaiului de lucru al proiectului permite vizualizarea proiectului din mai multe
perspective. Cnd este deschis un proiect, n partea inferioar a ferestrei spaiului de lucru sunt
disponibile paginile: ClassView, ResourceView i FileView. n cazul proiectelor dezvoltate
pentru aplicaii de baze de date este posibil s apar n plus o pagin DataView. Aceste pagini
permit accesarea oricrei componente a proiectului, se poate modifica dimensiunea seciunii
spaiului de lucru i a altor seciuni care apar n Visual Studio prin efectuarea unui clic pe
marginea seciunii i
deplasarea mouse-ului n timp
ce se ine butonul apsat.
Paginile din partea
inferioar a ferestrei mpart
proiectul n componente
logice. Fiecare reprezentare
afieaz o structur
arborescent de elemente care
reprezint componente ale
proiectului. Se poate expanda
sau condensa elementele
arborelui efectund clic pe
simbolul plus (+) sau minus (-)
alturat n partea stng a acestora.
Efectund un clic pe eticheta de pagin ClassView, va fi afiat reprezentarea claselor.
Aceast reprezentare afieaz toate clasele folosite n cadrul
proiectului. AppWizard a creat aceste clase odat cu crearea iniial a
proiectului. Fiecare element aflat la nivelul secundar (mai puin
elementul Global) reprezint o clas i afieaz numele respectivei
clase. La expandarea unei clase, fiecare element subordonat reprezint
fie o funcie membru, fie o variabil membru a clasei. Pictogramele
alturate fiecrui element ofer informaii suplimentare.
Cea mai mare parte a programrii n cadrul unui proiect Visual
C++ este legat de clase. Acesta este motivul pentru care pagina
ClassView se dovedete de multe ori a fi cea mai utilizat, aici
putndu-se accesa orice clas, orice funcie membru sau orice variabil
din proiect. Efectuarea unui dublu clic asupra unui element va deschide
fiierul cu cod surs corespunztor n fereastra editorului, avnd
cursorul plasat pe linia corespunztoare elementului n cauz.
Efectuarea unui dublu clic pe numele unei clase acceseaz
definiia clasei. Efectuarea unui dublu clic pe o variabil membru
acceseaz nceputul definiiei funciei din cadrul fiierului care implementeaz clasa.
Numele fiierului deschis n fereastra de editor activ este
afiat n bara de titlu a ferestrei Developer Studio.
Pe lng posibilitatea de a naviga printre clasele din
proiect, seciunea ClassView ofer multe alte faciliti prin
intermediul meniurilor contextuale.
Un meniu contextual, este afiat pe ecran lng cursorul
mouse-ului la efectuarea unui clic cu butonul drept asupra unui
element. Pentru a afia meniul contextual pentru un element din
arborele de clase, se va selecta respectivul element cu butonul
drept al mouse-ului, elementul n cauz va fi evideniat i alturi
de el va fi afiat meniul de context. Meniul contextual afiat
depinde de tipul elementului selectat.
Meniul contextual permite efectuarea de diverse operaii
asupra clasei selectate. Selectarea opiunii Go to Definition, are acelai efect cu efectuarea unui
Programare orientat obiect

7
dublu clic pe numele clasei, i anume accesarea fiierului surs care conine definiia clasei.
Patru dintre opiunile meniului sunt folosite pentru adugarea de funcii sau variabile n cadrul
clasei.
La execuia unui clic pe
opiunea References pe ecran va
aprea mesajul:
Se va efectua un clic pe Yes
pentru a genera fiierul de navigare.
Proiectul va fi asamblat automat.
Odat ncheiat procesul, se va nchide
fereastra Output prin efectuarea unui
clic pe cruciulia aflat n colul din stnga
sus.
Informaiile de navigare aduc
faciliti suplimentare de navigare,
disponibile prin intermediul meniului
contextual din ClassView.
Opiunea References are ca efect
afiarea tuturor locaiilor din proiect care
fac referire la elementul selectat. Pentru fiecare referin sunt afiate numele fiierului surs i
numrul liniei, fiind oferit astfel, posibilitatea de a accesa direct oricare dintre linii.
Opiunea Derived Classes afieaz detalii privind clasa selectat i clasele derivate din
acestea.
Opiunea Base Classes afieaz,
detalii privind clasa selectat i toate clasele
sale de baz, inclusiv clasele din biblioteca
MFC.
Opiunea Group By Access
din meniul contextual este folosit
pentru a ordona membrii clasei.
Acetia sunt afiai n ordine
alfabetic n cazul n care opiunea
Group By Access nu este bifat; n caz contrar,
membrii sunt afiai n ordinea tipului de
acces-privat, protejat i apoi public.
Pentru a aduga o variabil va fi apelat
meniul contextual, din care se va selecta Add
Member Variable, fiind afiat caseta de
Dialog Add Member Variable, care este
folosit, trebuind s se specifice tipul, numele i modul de
acces pentru noua variabil.
Casetele de Dialog Add Member Variabile i Add
Member Function, adaug automat liniile de cod necesare
n fiierele antet i de implementare corespunztoare clasei
selectate.
Pentru a aduga o funcie membru ntr-o clas se
Programare orientat obiect

8
va apela din meniul contextual al clasei, opiunea Add Member Function, trebuind s se
stabileasc tipul funciei i s i se dea un nume. Dac noua funcie necesit parametrii, acetia
vor fi introdui n caseta Function Declaration.
Noua funcie va aprea n seciunea Class View ca i element subordonat clasei n care s-
a creat, iar corpul acestei funcii este vizibil n fereastra editorului.
Cnd se adaug membrii claselor prin intermediul casetelor de Dialog Add Member, nu
are loc nici un fel de validare.
Pentru a se afia resursele, se va efectua clic pe eticheta de
pagin Resource View din fereastra spaiului de lucru, dup care se va
expanda elementele efectund clic pe semnele plus (+) alturat n partea
lor stng.
Se va observa, c, AppWizard a creat dou machete pentru
casete de Dialog. Macheta IDD_EXEMPLU_DIALOG reprezint
caseta de Dialog principal a aplicaiei, pe care AppWizard a creat-o
din cauz c s-a optat pentru o aplicaie de tip Dialog. Macheta
IDD_ABOUTBOX este caseta de Dialog apelat prin intermediul
opiunii de meniu Help About i afieaz pictograma aplicaiei i
numrul de versiune.
Aceast reprezentare afieaz toate resursele folosite n proiect. Noiunea de resurs
cuprinde elementele vizuale ale unui proiect. De pild, casetele de Dialog sunt resurse, la fel ca
i meniurile sau pictogramele.
Motivul pentru care resurse de genul meniurilor, al casetelor de Dialog i al tabelelor de
iruri sunt separate de codul surs este acela c se dorete posibilitatea de modificare a acestora
independent de acesta. Astfel se nlesnete foarte mult dezvoltarea de aplicaii internaionale.
Spre exemplu, toate irurile dintr-o tabel de iruri pot fi traduse ntr-o a doua limb, fr a fi
necesar modificarea codului surs.
Asemeni reprezentrii claselor, reprezentarea
resurselor afieaz un meniul contextual la efectuarea unui
clic cu butonul drept asupra unui element. n condiiile n
care se va selecta Insert din meniul contextual Personal
Resources, pe ecran va aprea caseta de Dialog Insert
Resource, n care se pot vedea diferitele tipuri de resurse
care pot fi inserate ntr-un proiect Visual C++.
O tabel de acceleratori reprezint o list de asocieri
ntre combinaii de taste i comenzi din program. O
denumire uzual pentru accelerator este cea de combinaie
de taste. O combinaie de taste reprezint o modalitate mai
rapid de a executa o comand dect selectarea acesteia
dintr-un meniu. De exemplu o soluie convenabil pentru executarea comenzii Cut din meniul
Edit, este Ctrl+X.
O resurs de tip bitmap este o imagine de o dimensiune oarecare compus din puncte.
Fiecare punct poate avea o culoare distinct. Bitmap-urile sunt utilizate pentru afiarea
imaginilor care se vd pe barele de instrumente, iar ceea ce se vede pe ecranul introductiv afiat
la lansarea Visual C++ este o imagine bitmap mai mare.
Un cursor este o resurs de tip imagine. Cursoarele sunt folosite n principal ca
reprezentri ale indicatorului mouse-ului (cursorul standard din Windows este o sgeat).
Trstura distinctiv a unui cursor este prezena unui punct senzitiv, care este folosit pentru a
urmri poziia acestuia pe ecran.
O pictogram este, de asemenea, o resurs de tip imagine.
O resurs de tip Dialog este o machet de fereastr care poate conine celelalte tipuri de
resurse, aa cum sunt meniurile i butoanele.
O resurs de tip meniu conine exact ceea ce sugereaz numele su, i anume un meniu.
De regul, o aplicaie include un meniu n partea superioar a ferestrei sale principale (aa cum
Programare orientat obiect

9
este i cazul cu Developer Studio), ns pot exista mai multe meniuri. De exemplu, este posibil
adugarea ntr-un proiect a unei resurse de tip meniu i utilizarea acesteia ca i meniu de context.
O resurs de tip tabel de iruri ar trebui s conin toate irurile de caractere folosite
ntr-o aplicaie. Fiecare element are asociat un identificator unic, utilizat pentru a referi irul
respectiv n cadrul codului surs.
Motivul pentru care toate irurile sunt introduse ntr-o tabel de iruri i nu direct n
fiierele surs este nlesnirea traducerii n alte limbi. Dac toate textele utilizate ntr-o aplicaie se
afl ntr-o tabel de iruri, este posibil crearea unei a doua tabele ntr-o alt limb. Dup
lansarea aplicaiei este utilizat tabela de iruri corespunztoare.
O resurs de tip bar cu instrumente conine o mulime de butoane. De regul fiecare
buton reprezint o comand de meniu. Pe suprafaa butoanelor pot fi desenate imagini sub form
de bitmap-uri i fiecare buton poate avea asociat o explicaie care va fi afiat atunci cnd
mouse-ul se deplaseaz deasupra butonului.
O resurs de tip versiune conine informaii despre aplicaii, ca de exemplu, firma
productoare, numele produsului, un numr de versiune etc., informaii ce se afl ntr-un format
standard care permite accesarea lor din alte aplicaii.

Lucrul cu macheta pentru caseta de dialog
Editarea unei machete pentru caseta de dialog principal IDD_EXEMPLU_DLG, va
presupune parcurgerea urmtorilor pai:
1. Se va efectua clic pe textul TODO: Place Your Controls
Here, apoi se apas Delete, pentru ca textul respectiv, s fie
nlturat.
2. Pentru nlturarea butonului Cancel, se va efectua clic pe el,
apoi se va apsa tasta Delete.
3. Se execut clic pe OK.
4. Se apas pe butonul din dreapta al mouse-ului, pentru a
apela meniul contextual.
5. Se va selecta din meniul contextual opiunea Properties, i va
fi afiat caseta Push Button Properties.



6. S
e
selecteaz pagina General, apoi se va
nlocui cuvntul OK din caseta Caption cu Exit.
n acest moment s-a modificat eticheta unui control fr a afecta modul n care controlul
opereaz n cadrul programului. Programele identific resursele prin ID. n cazul de fa ID-ul
folosit la adugarea codului care rspunde la mesajele corespunztoare controlului este un ID de
control predefinit de ctre MFC care determin apelarea funciei CDialog:OnOK(), aceasta
coninnd codul necesar pentru nchiderea casetei de
Dialog.
7. Se va nchide caseta de dialog Push Button
Properties.
S-au realizat modificri minore unei casete de
Dialog existente, prin AppWizard. S vedem ns ce se
ntmpl la crearea unei casete de Dialog complet noi.
Crearea sau inserarea unei noi machete pentru o caset de
Dialog, se va desfura n urmtoarea succesiune:
se va selecta pagina Resource View a ferestrei spaiului de
lucru al proiectului;
Programare orientat obiect

10
se va efectua clic cu butonul drept pe catalogul Dialog, i va fi afiat un meniu
contextual;
se selecteaz Insert Dialog, i va fi creat o nou machet de caset de Dialog,
aceasta fiind deschis n fereastra editorului de resurse. Noua caset de Dialog este
generat cu butoanele implicite OK i Cancel.
La inserarea unei noi machete pentru o caset de Dialog, editorul de resurse asigur
atribuirea unui ID unic. Acest ID generat va fi IDD_DIALOG urmat de un numr i va figura n
catalogul Dialog din seciunea Resource View.
Primul lucru care trebuie realizat, dup crearea unei casete de Dialog este nlocuirea ID-
ului generat, cu ceva mai sugestiv. De exemplu, n cazul n care caseta de Dialog va fi utilizat
pentru a nregistra informaiile privind prezena la serviciu a salariailor, un ID posibil ar fi
IDD_PONTAJ.
Se va efectua clic cu butonul drept pe suprafaa machetei Dialogului, n afara oricrui
control, va fi afiat un meniu contextual. Trebuie s nu fie nici un control selectat la
apelarea meniului de context, n acest moment
putnd s se acceseze proprietile nsi
casetei de Dialog.
Se va selecta Properties din meniul contextual,
fiind afiat caseta de Dialog Properties.
Se selecteaz pagina General;
n cadrul casetei ID, se nlocuiete
IDD_DIALOG1 tastnd IDD_PONTAJ.
Se obinuiete prefixarea ID-ului unei casete de Dialog cu IDD_ pentru a face distincia
fa de celelalte tipuri de resurse.
Modificarea proprietilor este una dintre cele mai uzuale operaii din cadrul proiectrii
casetelor de Dialog, de aceea, se recomand pstrarea deschis a casetei de Dialog Properties,
utiliznd pioneza din colul stnga sus al acesteia cnd se efectueaz un clic n alt parte.
Developer Studio include i alte casete de Dialog cu pioneze.
Tipul resursei selectate determin paginile i opiunile coninute n caseta de Dialog
Property. Prin intermediul opiunilor casetei de Dialog Property se pot modifica caracteristicile
ntregii casete de Dialog i ale fiecrui control coninut. Cea de-a doua proprietate pe care este
foarte probabil se va modifica la crearea unei casete de Dialog este titlul acesteia, care este
textul ce apare pe bara de titlu.
Pentru exemplul nostru, se va modifica
titlul, tastnd Pontaj Dialog n interiorul casetei
Caption. Noul titlu va aprea pe macheta
Dialogului din editorul de resurse pe msur ce se
tasteaz.
Printre alte opiuni disponibile n pagina
General se afl modificarea fontului utilizat de
ctre caseta de Dialog. Dac se selecteaz o
dimensiune mai mare de 8, ntreaga caset de
Dialog va deveni mai mare. Dimensiunea casetei
de Dialog este calculat pe baza nlimii i limii
medii ale fontului utilizat. Fontul implicit este MS Sans Serif de dimensiune 8 i nu se
obinuiete folosirea altor fonturi n casetele de Dialog.
O unitate de tip Dialog este numele dat unitii de msur folosit n casetele de Dialog i
bazat pe fontul asociat Dialogului. Este posibil s se mai ntlneasc i prescurtarea DLU, care
vine de la Dialog-Unit - (unitatate de tip Dialog).
Xpos i Ypos specific poziia n care va aprea iniial caseta de Dialog, aceasta este
relativ la fereastra printe a casetei de Dialog. Valori nule pentru aceste coordonate vor
determina afiarea casetei de Dialog n centrul ferestrei sale printe.
n mod sintetic, se poate spune c proprietile unei casete de dialog sunt:
Programare orientat obiect

11
Dialog ID, n mod normal este stabilit la o valoare, dar este bine s se dea nume ct
mai sugestive;
Dialog Caption (legend), n mod normal stabilit la Dialog (i aceasta de regul se
schimb);
Menu (meniu) n mod normal liber, ntruct foarte puine casete de dialog folosesc
meniuri;
Position (poziie), n mod normal liber.
n caseta de Dialog Properties se afl trei pagini
care privesc stilurile. Dac se selecteaz eticheta Styles, se
selecteaz prima pagin.
Unele opiuni de stil, pot influena alte opiuni. Dac
se va deselecta stilul Title Bar, aceasta nu va nltura doar
bara de titlu, ci va dezactiva, totodat , opiunile meniului de
sistem i va elimina titlul. Dac se va valida apoi, Title Bar, va trebui s se introduc din nou
titlul. O problem similar poate aprea la modificarea marginii Dialogului.
Stabilirea unor stiluri de Dialog determin automat invalidarea altor opiuni, fiind
posibil stabilirea proprietilor unui Dialog, astfel nct acesta s devin inutilizabil.
O caset de Dialog poate fi fcut destul de uor inutil sau chiar complet invizibil prin
stabilirea unor opiuni de stil, problem care poate fi delicat de rezolvat. Cea mai uoar metod
de verificare (n cazul suspectrii unei astfel de situaii), este compararea opiunilor de stil cu
cele ale unei casete de Dialog care funcioneaz corect. n marea majoritate a cazurilor, sunt
recomandate opiunile de stil implicite.
Valorile prestabilite sunt:
Style (stil) de obicei stabilit la Popup (derulant) pentru majoritatea casetelor de dialog. n
cazul abloanelor speciale folosite n Form Views sau Dialog Bars (bare de dialog), stilul
este stabilit La Child (descendent);
Border (margine), stabilit la Dialog Frame (marginea casetei de dialog) pentru
majoritatea casetelor de dialog;
Minimize box (caset de minimizare), creeaz o caset de minimizare pentru caseta de
dialog, aceasta este de obicei liber;
Maximize box (caset de maximizare), creeaz o caset de maximizare pentru caseta de
dialog, aceasta este de obicei liber;
Titlebar (bara de titlu), creeaz o bar de titlu pentru caseta de dialog, fiind aproape
ntotdeauna activat, deoarece majoritatea casetelor de dialog au o bar de titlu;
System Menu (meniu sistem) utilizat pentru a indica dac respectiva caset de dialog
este dotat cu un meniu sistem, n mod normal aceast caset este activat;
Horizontal scroll (derulare pe orizontal), utilizat pentru a crea o bar de derulare pentru
caseta de dialog. Aceast caset de validare este aproape ntotdeauna liber, deoarece
casetele de dialog folosesc rareori o bar de derulare;
Vertical Scroll (derulare pe vertical), utilizat pentru crearea unei bare de derulare
vertical pentru caseta de dialog, fiind rar folosit;
Clip Siblings, folosit numai pentru ferestrele descendent, n mod normal este liber;
Clip Children, folosit pentru ferestrele prini, n majoritatea cazurilor aceast caset
este dezactivat.
Eticheta marcat More Styles (alte stiluri) conine
proprieti adiionale pentru caseta de dialog, ntre care
amintim:
System Modal, care creeaz o caset de dialog
sistem-modal, dac aceast opiune este activat,
utilizatorul nu poate comuta la un alt program;
Absolute align (aliniere absolut), este utilizat pentru a indica modul de poziionare a
casetei de dialog la afiarea iniial a acesteia. Dac aceast caset este validat,
caseta de dialog este aliniat la ecran, n loc de fereastra printe;
Programare orientat obiect

12
No idle msg, previne transmiterea unui anumit mesaj de fereastr, WM_ENDEIDLE,
atunci cnd coada de ateptare a mesajelor din caseta dialog este liber, normal,
aceast caset de validare este inactiv;
Local edit, utilizat pentru a specifica modul de alocare a memoriei unui control de
editare, aceast caset de validare n mod normal este inactiv, ceea ce presupune
folosirea de ctre controalele de editare a memoriei situate n afara segmentului de
date alocat programului;
Visible, utilizat pentru a arta c o caset de dialog trebuie s fie vizibil cnd este
afiat pentru prima dat, normal aceast caset este activ. n cazul unor vizualizri
formular (Form Views), caseta este inactiv;
Disabled (inactiv), arat c o caset de dialog, trebuie s fie inactiv la prima afiare.
n mod normal, aceast caset de validare este inactiv;
3D-look, ofer casetei de dialog un aspect tridimensional, normal, este inactiv;
Set foreground, foreaz caseta de dialog s fie plasat n prim plan, normal este
inactiv;
No fail create, cere sistemului Windows s creeze caseta de dialog, chiar dac
survine o eroare, normal, este inactiv;
Control, creeaz o resurs caset de dialog care poate fi folosit drept control
descendent (child control), normal, este inactiv;
Center, determin centrarea casetei de dialog la afiarea iniial, normal, este
inactiv;
Center mouse, plaseaz cursorul mouse-ului n centrul casetei de dialog, normal este
inactiv.
Mai exist cteva stiluri avansate, localizate n fereastra corespunztoare etichetei
Extended Styles (stiluri extinse), care sunt rareori folosite.
Casetele de Dialog, ns nu au nici o valoare fr controale.

Tipuri de instrumente utilizate
De fiecare dat cnd se deschide o machet a unei casete de Dialog n cadrul editorului
de resurse, n Developer Studio apare un meniu Layout. De asemenea vor fi afiate dou noi
bare de instrumente, bara cu instrumente Dialog (ce ajut la poziionarea controalelor), i cea cu
instrumente Controls.

Unde:
1. Testare 8. Spaiere orizontal
2. Aliniere la stnga 9. Spaiere vertical
3. Aliniere la dreapta 10. Egalarea limilor
4. Aliniere n sus 11. Egalarea nlimilor
5. Aliniere n jos 12. Egalarea dimensiunilor
6. Centrare vertical 13. Comutator pentru gril
7. Centrare orizontal 14. Comutator pentru linii de ghidare

Bara cu instrumente Controls, permite adugarea de controale n cadrul unei casete de
Dialog.
Unde:
1. Selectare 14. Control imagine
1
2
3
4
5
6
7
8
9
10
14
11
12
13
Programare orientat obiect

13
2. Etichet static 15. Control de editare
3. Etichet de grup 16. Control buton
4. Caset de validare 17. Buton de opiune
5. Caset combinat 18. Caset cu list
6. Bar de derulare orizontal 19. Bar de derulare vertical
7. Control de modificare incremental 20. Control indicator de evoluie
8. Control glisor 21. Tast de acces
9. Control list 22. Control arbore
10. Control de paginare 23. Control animaie
11. Control caset de editare formatat 24. Control de selecie a datei/orei
12. Control calendar 25. Control adres IP
13. Control propriu 26. Caset combinat extins




Dac vreuna din barele cu instrumente Dialog sau Controls nu este vizibil, afiarea ei
se face prin una din urmtorii pai:
se selecteaz Customize din meniul Tools, i va apare caseta de Dialog Customize;
se selecteaz pagina Toolbars;
se selecteaz din pagina Toolbars, Dialog/Controls;
se efectueaz clic pe Close.
Fiecare imagine de pe bara de instrumente Controls reprezint un tip distinct de control.
Dac se plaseaz cursorul mouse-ului deasupra unei astfel de imagini, este afiat o caset mic
ce descrie tipul controlului. Selectarea tipului de control care va fi adugat la caseta de Dialog se
face prin efectuarea unui clic pe imaginea corespunztoare. Odat ce a fost selectat un control,
imaginea sa este afiat n adncime. Imaginea sgeat din partea stng sus a barei cu
instrumente deselecteaz controlul i aduce mouse-ul napoi la comportamentul su obinuit.
Adugarea unui control ntr-o caset de Dialog se face selectnd mai nti imaginea
corespunztoare i efectund apoi clic pe macheta casetei de Dialog.
nainte de a aduga controale n noua caset de Dialog, se mrete dimensiunea acesteia,
pentru a avea la dispoziie un spaiu mai mare.
Pentru a modifica mrimea casetei de Dialog, se realizeaz un clic pe marginea machetei
casetei de Dialog, n jurul machetei apare un dreptunghi cu puncte de dimensionare, iar prin
1 14
2 15
3 16
4 17
5
18
6
19
7 20
8 21
9
10
11
22
23
24
23 12
13 26
Programare orientat obiect

14
selecionarea punctelor adecvate se poate mri, micora att n lime ct i n nlime. Pe
msur ce tragem cu cursorul ntr-una din pri apare caseta cu dimensiunea modificat.


4. Adugarea de butoane de opiune

Exist numeroase situaii n care logica presupune alegerea unei singure opiuni dintre
dou sau mai multe. Butoanele de opiune sunt create tocmai n aceast idee, i sunt capabile s
efectueze automat deselectarea. Butoanele de opiune sunt plasate aproape ntotdeauna n casete
de grupare, ceea ce face posibil ca o caset de dialog s aib mai multe grupuri de butoane de
opiune care s funcioneze independent.
Deoarece selectarea i deselectarea butoanelor dintr-un grup, se petrece n mod automat,
singurul lucru pe care trebuie s-l fac programul, este s afle care dintre opiunile ce se exclud
mutual este selectat. n acest scop butoanele de opiune sunt asociate cu o variabil. Toate
acestea se realizeaz relativ simplu, aa cum se va demonstra pe parcursul unui exemplu.
Cel mai important lucru care trebuie urmrit la crearea butoanelor de opiune, este
asigurarea corectitudinii proprietilor i a opiunilor de stil care se specific n cadrul
editorului de resurse. La efectuarea unui clic pe un buton de opiune care are stilul Auto, butonul
respectiv este selectat i toate celelalte butoane de opiune din grupul su i care au acelai stil
sunt n mod automat deselectate.
Pentru fiecare control buton de opiune dintr-o caset de grupare trebuie validat
opiunea Auto Style pentru a beneficia de deselectare automat. Aceast opiune este stabilit
implicit la crearea butoanelor de opiune.
Gruparea controalelor se va face prin intermediul proprietii Group. Un control care are
proprietatea Group validat este considerat primul control din grup; fiecare control care urmeaz
(n raport cu ordinea de selectare) i are proprietatea Group invalidat se afl n acelai grup.
Grupul se ncheie la urmtorul control care are proprietatea Group validat. Deplasarea ntre
controalele unui grup se face cu ajutorul tastelor sgeat.
n exemplul luat n considerare se presupune c pentru absolvenii de liceu, din anul
2007, li se d un chestionar, n care ei trebuie s selecteze ntre 5 Centre Universitare, iar mai
apoi s aleag un profil.
Pentru aceasta se va realiza un proiect Absolveni (parcurgndu-se etapele de creare a
unui proiect prezentate n capitolul anterior), care va utiliza dou grupuri de butoane de opiune,
primul dintre ele selecteaz un ora de renume cu centru universitar, iar cellalt selecteaz
domeniul dorit.
1) n proiectul Absolveni se va realiza caseta de dialog cu
acelai nume IDD_ABSOLVENTI_DIALOG, care se va
deschide n cadrul editorului de resurse;
2) Se selecteaz butonul Group Box de pe bara de
instrumente Controls, apoi se adaug o caset de grupare
n partea stng a casetei de dialog;
3) Caseta de grupare fiind selectat, se va efectua clic pe butonul din dreapta la mouse-
ului, aprnd meniul contextual, din care
se va alege opiunea Properties, ce
conduce la deschiderea casetei de dialog
Group Box Properties;
4) se va introduce n caseta Caption Ora, i
se valideaz opiunea Tab Stop;
5 ) se selecteaz butonul Radio Button de pe
bara de instrumente Controls i se adaug cinci
butoane de opiune n interiorul casetei de
grupare, Orae.
Programare orientat obiect

15
6) Se selecteaz primul buton, se introduce IDC_BUCURESTI pentru ID, i Bucuresti
pentru Caption, dup care se valideaz opiunea Group;
7) Se selecteaz apoi urmtoarele butoane, i analog cum s-a procedat la pasul 6, se vor
trece numele urmtoarelor centre universitare: Timioara, Iai, Cluj i Craiova, dar nu
se va mai valida opiunea Group.
8) Se selecteaz butonul Group Box de pe bara de instrumente Controls, apoi se creeaz
o caset de grupare n partea dreapt a grupului Orae;
9) Se introduce Profil n caseta Caption, i se valideaz opiunea Tab Stop;
10) Se adaug trei butoane de opiune n interiorul cadrului Profil;
11) Se selecteaz toate cele trei butoane de opiune care tocmai au fost adugate
efectund clic pe fiecare n timp ce se
ine apsat tasta Ctrl;
12) Se execut clic pe pagina Styles a
casetei de dialog Properties, i se
valideaz opiunea Push-like;
13) Se selecteaz butonul superior, se
introduce IDC_TEHNIC pentru ID, i
Tehnic pentru Caption, dup care se va
valida opiunea Group;
14) Se selecteaz n mod analog, celelalte
dou butoane, unde se completeaz
profilul economic i umanist.
Ordinea de selectare este important pentru
func
ionar
ea
corect a butoanelor de opiune, deoarece, pe ea se
bazeaz identificarea urmtorului control din grup.
Pentru a inspecta ordinea de selectare, se va alege
Tab Order din meniul Layout; pentru a verifica
faptul c grupurile de butoane de opiune au fost
configurate corect, se apas Ctrl+T sau se
selecteaz Test din meniul Layout. Ar trebui s se
poat selecta exact unul dintre orae i unul dintre
profile. Pentru a ncheia testarea se apas Esc.


5. Asocierea de variabile pentru butoanele de opiune

Scopul unui grup de butoane de opiune este s permit alegerea unui element din mai
multe. La un moment dat, programul trebuie s identifice butonul selectat i s acioneze n
consecin. n acest scop, unui grup de butoane de opiune i se asociaz o variabil. Variabila
Programare orientat obiect

16
este asociat de fapt primului buton de opiune din grup (cel care are validat opiunea Group).
n exemplul prezentat, aceste butoane sunt cele care au IDC_BUCURESTI i IDC_TEHNIC.
Adugarea unor variabile, i asocierea lor cu butoanele de opiune adecvate se face prin
intermediul instrumentului ClassWizard, n cazul exemplului nostru, va fi necesar cte o
variabil pentru fiecare grup.
Asocierea variabilelor cu butoanele de opiune prin intermediul ClassWizard, se
realizeaz n urmtorii pai:
se selecteaz ClassWizard;
se alege pagina Member Variables;
se selecteaz din caseta combinat
Class Name: clasa asociat dialogului,
(CAbsolventiDlg);
se selecteaz din caseta cu list
Control Ids: ID-ul controlului, pentru
exemplul nostru se va selecta
(IDC_BUCURESTI);
se execut clic pe butonul Add
Variable ( aflat n dreapta casetei de
mai sus) sau se va executa dublu clic
pe ID-ul contorului, i se va afia
caseta de dialog Add Member Variable;
se introduce numele variabilei n caseta Member
Variable Name; pentru exemplu, se va introduce
m_nOrase, la Category ( categoria de variabile)
se las valoarea implicit value, iar la tipul
variabilei se las int (integer) apoi se efectueaz
clic pe OK, pentru a reveni n pagina Member
Variables din ClassWizard.
n mod analog, se selecteaz IDC_PROFIL din
caseta cu list Control IDs, i se introduce
m_nProfil n caseta Member Variable
Name, apoi se efectueaz clic pe OK pentru
a fi adugat noua variabil membru;
Se execut OK, pentru a nchide caseta de
dialog ClassWizard.
n acest moment, variabilele au fost adugate,
aa c trebuie iniializate. ClassWizard a generat n
cadrul programului codul care iniializeaz valorile cu
-1, ceea ce nseamn, c dac, se asambleaz i ruleaz
programul n acest moment, la afiarea casetei de
dialog nu va fi selectat nici unul dintre butoanele de
opiune.
Va trebui s se editeze codul de iniializare
generat de ClassWizard n constructorul clasei CAbsolventiDlg. Pentru aceasta, se va selecta
pagina ClassView, se expandeaz clasa CAbsolventiDlg, i se efectueaz dublu clic pe primul
element expandat, avnd ca rezultat apariia ferestrei de editare unde este afiat funcia
constructor. Vor trebui nlocuite valorile celor dou variabile adugate (-1) pentru iniializarea
lor, cu zero:
m_nOrase = 0;
m_nProfil = 0;
Singurul lucru care rmne de fcut, este ataarea de cod care s identifice butoanele de
opiune selectate n cadrul fiecrui grup. Aceasta se face prin adugarea unei funcii de tratare
pentru butonul OK i afiarea unui mesaj Succes!.
Programare orientat obiect

17
Se va aduga o funcie
de tratare a mesajului
BN_CLICKED corespunztor
butonului IDOK. Ataarea
funciei se va face prin apelarea
vrjitorului ClassWizard fie prin
dublu clic pe butonul OK, fie
prin Ctrl+W i va apare caseta
de dialog corespunztoare din
care vom selecta opiunea
Message Maps.
Se poziioneaz cursorul
n cadrul casetei Object Ids pe
IDOK, alegem din caseta de mesaje BN_CLICKED dup care
alegem opiunea de Add Function, pe ecran aprnd mesajul:
Se va efectua un clic pe butonul OK, i n acest moment exist o
funcie membru cu numele OnOK (), iar pentru ca aceast
funcie s pregteasc i s afieze un mesaj care s in cont de
butoanele de opiune selectate, se va aduga urmtorul cod, prin
selectarea opiunii Edit code:

void CAbsolventiDlg::OnOK()
{
// TODO: Add your control notification handler code here
CString strMessage;
CString strProfil;
CString strOrase;

//** Preluam in variabile informatiile despre controale
UpdateData();

//** Extragem eticheta fiecaruia dintre butoanele de optiune selecatte
GetDlgItem (IDC_TEHNIC + m_nProfil)->GetWindowText (strProfil);
GetDlgItem (IDC_BUCURESTI + m_nOras)->GetWindowText (strOrase);

//** Formatam si afisam mesajul
strMessage = "Succes! to a " + strProfil + " profil in: " + strOrase ;
MessageBox (strMessage);
void CAbsolventiDlg::OnOK()

n acest moment se va asambla i rula
programul.
La selectarea unei anumite opiuni din ambele
grupuri, de exemplu Timioara la ora, i economic la
profil, pe ecran va apare mesajul: