CATEGORII DOCUMENTE |
DOCUMENTE SIMILARE |
|
TERMENI importanti pentru acest document |
|
: | |
Meniuri
Majoritatea aplicatiilor pentru Windows au bara de meniuri utilizata pentru controlul aplicatiei. Meniurile sunt introduse in aplicatie prin resursele de meniuri create cu editorul de meniuri (Figura 1). Editorul de meniuri nu numai ca ajuta sa creati noi meniuri si sa adaugati articole in meniuri ci si sa stabiliti atributele pentru meniurile create. Aceste pot avea rolul, printre altele, de a stabili daca articolele din meniu trebuie sa fie initial activate sau nu.
1. Pasii necesari pentru crearea unui nou meniu
1. Executati dublu click pe elementul de identificare al meniului in panoul Resource View din fereastra Project Workspace (Figura 1). Meniul va fi afisat in editorul de meniuri.
Figura 1: Editorul de meniuri
Selectati meniul gol de pe bara de meniuri si apasati tasta ENTER. Pe ecran va aparea foaia de proprietati Menu Item Properties (Figura 2).
Figura 2: Foaia de proprietati a meniului gol
2. Scrieti denumirea meniului in caseta Caption, folosind un ampersand (&) pentru a indica tasta de comanda rapida a meniului (Figura 3).
Figura 3: Denumirea noului meniu apare pe baza de meniuri
3. Executati dublu click pe primul articol liber din noul meniu creat. Pe ecran va reaparea foaia de proprietati a articolului liber (Figura 4).
Figura 4: Foaia de proprietati a articolului liber
4. Scrieti elementul de identificare al comenzii pentru articolul din meniu in caseta ID si introduceti un ampersand (&) urmat de numele comenzii in caseta Caption (Figura 5).
5. Repetati pasii 4 si 5pentru toate articolele din meniu.
Figura 5: Elementul de identificare si numele articolului creat
2. Functiile mesaj-raspuns
Dupa crearea resurselor de meniu, trebuie ca fiecarui articol din meniu sa ii fie asociata o functie mesaj-raspuns. Programul poate apoi procesa solicitarea utilizatorului pe baza functiei asociate. Crearea functiilor mesaj-raspuns se face cu ajutorul Class Wizard-ului (Figura 6):
Selectati clasa care va defini functia (Clasa View).
Selectati elementul de identificare al meniului care va fi asociat cu functia
Adaugati functia in program (Click pe COMMAND si Add Function).
Figura Crearea functiilor mesaj-raspuns cu Class Wizard
Cand Class Wizard adauga o functie mesaj-raspuns intr-o clasa, mai intai declara noua functie in fisierul antet al clasei.
afx_msg void Onarticolam11();
Prefixul afx_msg identifica linia ca fiind o functie mesaj-raspuns. Prefixul nu este obligatoriu, dar este bine sa fie introdus pentru a deosebi functiile mesaj-raspuns de alte functii membru ale clasei.
Dupa declararea functiei in fisierul antet al clasei, Class Wizard adauga functia in harta de mesaje a clasei:
BEGIN_MESSAGE_MAP(CP1View, CView)
//}AFX_MSG_MAP
END_MESSAGE_MAP()
Harta de mesaje de mai sus informeaza MFC ca, atunci cand aplicatia primeste o comanda cu elementul de identificare ID_articol_am11, trebuie sa apeleze functia mesaj-raspuns Onarticolam11().
Dupa adaugarea in harta de mesaje, MFC defineste scheletul functiei in fisierul de implementare a clasei:
void CP1View::Onarticolam11()
MFC defineste o functie mesaj-raspuns goala. Trebuie sa scrieti singur corpul functiei, creand codul sursa care raspunde la solicitarea prin articolul de meniu.
3. Functiile UI de comanda a actualizarii
MFC ofera un mecanism pentru actualizarea corespunzatoare a articolelor de meniu. De fiecare data cand un articol de meniu urmeaza sa fie afisat, MFC verifica daca programul a definit o functie UI de comanda a actualizarii pentru articolul in cauza. Daca da, MFC ruleaza functia UI imediat inainte de a afisa articolul de meniu, pentru ca aplicatia sa aiba posibilitatea de a adauga semne de validare, de a dezactiva optiuni, de a modifica textul articolelor de meniu, etc.
Adaugarea functiilor UI de comanda a actualizarii in program se realizeaza la fel ca la adaugarea functiilor mesaj-raspuns. Se apeleaza ClassWizard si se selecteaza un element de identificare al comenzii din meniu in caseta Object IDs (in caseta Class name trebuie selectata clasa care va defini functia - clasa View). In panoul Messages apar tipurile de functii COMMAND si UPDATE_COMMAND_UI. Se selecteaza prin dublu clic UPDATE_COMMAND_UI si ClassWizard va afisa caseta de dialog Add Member Function continand sugestii pentru denumirea functiei UI de comanda a actualizarii:
Figura 7: Adaugare functiilor UI de comanda a actualizarii in aplicatie
Simpla adaugare a functiei in aplicatie nu este insa suficienta, programatorul trebuie sa scrie corpul acesteia in functie de ce se doreste cu articolul de meniu inainte ca MFC sa il afiseze. In orice caz, trebuie introduse atributele articolului de meniu apeland functiile membru din clasa CCmdUI, un obiect care este transmis functiei UI de comanda a actualizarii ca unic parametru.
3.1. Semne de validare
O solutie pentru folosirea atributelor articolelor de meniu este includerea casetelor de validare alaturi de articole, cand acestea reprezinta comenzi care activeaza si dezactiveaza o optiune.
Figura 8: Semnele de validare arata daca optiunea
este selectata sau nu
Functia UI de comanda a actualizarii care este destinata semnului de validare este descrisa in continuare:
void CP1View::OnUpdatem11(CCmdUI* pCmdUI)
Aceasta primeste ca parametru un pointer spre un obiect CCmdUI. Pentru a introduce un semn de validare in dreptul articolului din meniu functia membru SetCheck() a obiectului CCmdUI, primeste ca argument valoarea booleana m_articol setata pe TRUE. In cazul in care m_articol este FALSE semnul de validare nu apare langa articol. Astfel, variabila m_articol trebuie sa fie membra a clasei View si sa fie initializata (de exemplu in constructorul acesteia).
Selectand clasa (de exemplu clasa View) si folosind click dreapta se pot adauga variabile membru:
Figura 9: Adaugarea variabilei membru clasei CP1View
si initializarea in constructor
Cand utilizatorul deschide meniul, MFC apeleaza functia OnUpdatem11() pentru a introduce semnul de validare sau a-l sterge in dreptul articolului Submeniul m11. Operatia are loc imediat inainte ca MFC sa afiseze meniul, astfel ca utilizatorul nu vede cand semnul de validare este introdus sau eliminat. Cand meniul apare pe ecran, toate functiile de comanda a actualizarii din articolele de meniu au fost deja apelate si atributele articolelor au fost deja introduse.
3.2. Puncte de selectare
Alta solutie pentru folosirea atributelor articolelor de meniu este introducerea de puncte de selectare. Pentru articolele care se exclud reciproc, in dreptul optiunii curente apare un punct de selectare. Un exemplu in acest sens ar putea fi un grup de comenzi pentru selectarea culorilor.
Figura 10: Punctul de selectare indica selectia curenta dintr-un set de optiuni care se exclud reciproc.
Functia UI de comanda a actualizarii articolului dintr-un meniu pentru optiuni care se exclud reciproc (in cazul de fata culoarea utilizata dintr-un set de culori) este descrisa in continuare:
void Cp4View : : OnUpdateColorsRed (CCmdUI* pCmdUI)
Functia SetRadio() introduce sau elimina punctele de selectare din dreptul articolelor din meniu. Argumentul sau este o valoare booleana care indica daca trebuie introdus punctul de selectare sau nu, expresia booleana m_color = = RED poate lua valorile TRUE (introduce punctul) sau FALSE (elimina punctul).
3.4. Activarea si dezactivarea articolelor din meniu
A treia solutie pentru folosirea atributelor articolelor de meniu este activarea si dezactivarea articolelor din meniuri. Starea unei optiunile selectate la un moment dat determina adesea articolele din meniu care pot fi selectate.
Activarea si dezactivarea articolelor din meniuri se face cu functia UI de comanda a actualizarii care apeleaza functia Enable() a obiectului CCmdUI primit ca parametru:
void CP4View::OnUpdateitem1(CCmdUI* pCmdUI)
Functia membru Enable() are ca argument o valoare boolean care indica daca articolul trebuie activat (TRUE) sau dezactivat (FALSE) (vezi Figura 11).
3.5. Modificarea textului articolelor din meniuri
Textul majoritatii articolelor din meniuri ramane nemodificat pe durata executiei programului. Totusi pentru unele aplicatii unele articole se modifica in functie de o optiune selectata.
Modificarea textului se face cu functia UI de comanda a actualizarii care apeleaza functia SetText() cu argumentul corespunzator articolului din meniu:
void CP4View::OnUpdateOnOff(CCmdUI* pCmdUI)
Variabila var_on_off (membra a clasei View) este initializata in constructor si modificata, in exemplul prezentat, in functia mesaj-raspuns a primului articol al meniului ON/OFF.
void CP4View::OnOnOff()
Figura 11: Textul primului articol corespunde valorii TRUE a variabilei var_on_off. Aceasta valoare poate fi inversata, in functia mesaj-raspuns corespunzatoare, pentru ca urmatoarele doua articole sa fie activate la urmatoarea selectie a meniului.
Figura 12: Textul primului articol corespunde valorii FALSE a variabilei var_on_off. Aceasta valoare poate fi inversata, pentru ca urmatoarele doua articole sa fie dezactivate la urmatoarea selectie a meniului.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 2300
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved