2 - Organele barei de instrumente și bara de stare

În primul rând, să examinăm imaginile desenate pe butoanele barei de instrumente. Apoi vă vom spune cum să creați o fereastră de control a barei de instrumente Google.

Pregătirea imaginilor pentru butoane

În volumele anterioare ale "Bibliotecilor de programatori de sistem", am creat Bara de instrumente utilizând Win16. Apoi pentru fiecare buton am pregătit trei imagini diferite - pentru starea presată, presată și blocată. Dacă există mai multe butoane, este nevoie de mult timp pentru a desena.







Acum aveți nevoie doar de o singură imagine, dar în ea ar trebui să existe desene pentru toate butoanele. Ca exemplu, este mai bine să luați fișierul TOOLBAR.BMP, generat automat de generatorul de aplicații AppWizard din Microsoft Visual C ++ (Figura 2.1).

Fig. 2.1. Imaginea butoanelor standard pentru Bara de instrumente. care este creat de generatorul de aplicații AppWizard

Puteți să vă creați imaginile luând acest fișier ca bază, schimbând pictogramele existente sau adăugând altele noi. Pentru a face acest lucru, puteți utiliza, de exemplu, aplicația Paint inclusă în Microsoft Windows 95. De asemenea, puteți crea un nou fișier bmp, care trebuie să aibă 16 culori. O altă condiție este ca toate pictogramele din această imagine să aibă aceeași dimensiune.

În ambele cazuri, trebuie să adăugați imaginea creată în fișierul de resurse al aplicației, furnizându-i un identificator, de exemplu:

Dacă utilizați Microsoft Visual C ++, atunci acest mediu de dezvoltare a aplicațiilor va efectua automat toate modificările necesare ale fișierului rc, de îndată ce definiți resursa corespunzătoare.

Descrierea butoanelor

Apoi, trebuie să creați o serie de structuri TBBUTTON. care descrie butoanele și separatoarele între grupurile de butoane. În această matrice, trebuie să rezervați o structură pentru fiecare buton și pentru fiecare separator de grupuri de butoane.

În fișierul commctrl.h există o astfel de definiție a structurii TBBUTTON:

În câmpul iBitmap al fiecărei structuri de matrice, este necesar să notați numărul butonului (numerotarea începe de la zero). Pentru delimiter, acest câmp trebuie să fie setat la o valoare zero.

În idCommand ar trebui să notați ID-ul care urmează să fie trimis la fereastra părinte cu mesajul WM_COMMAND atunci când utilizatorul apasă butonul corespunzător. În cazul în care elementul este o serie de structuri TBBUTTON descrie separatorul butoane de grup în idCommand aveți nevoie pentru a scrie la zero.

Câmpul fsState trebuie să conțină pavilionul stării inițiale a butonului:

Separator între grupuri de butoane

Prin câmpul dwData, puteți transmite date suplimentare care vor fi stocate în descrierea butonului și utilizate dacă este necesar. Puteți introduce o valoare zero în acest câmp.

Dacă nu se utilizează șiruri de text, valoarea zero trebuie să fie înscrisă în câmpul iString.

Iată o mostră a matricei pregătite de structuri TBBUTTON, care descrie opt butoane și trei separatoare între ele:

Apelarea funcției pentru a crea fereastra barei de instrumente

Acum că ați pregătit fișierul cu imagini de buton, ați creat un identificator pentru acesta în fișierul de resurse al aplicației și ați pregătit o serie de structuri TBBITMAP. care descrie butoanele, puteți crea o fereastră a barei de instrumente. Cea mai ușoară modalitate de a face acest lucru este cu ajutorul funcției CreateToolbarEx special creată:

După cum puteți vedea din documentație, această funcție creează o fereastră a barei de instrumente și adaugă butoanele descrise în matricea structurilor TBBITMAP. În acest caz, trebuie să specificați și identificatorul imaginii butonului, precum și alți parametri enumerați mai sus.

Dacă este reușită, funcția CreateToolbarEx returnează identificatorul controlului bara de instrumente creat. care pot fi folosite pentru a trimite mesaje. Dacă Bara de instrumente nu este creată din nici un motiv, funcția returnează NULL.

Înainte de prima convorbire a acestei funcții, trebuie să apelați funcția InitCommonControls, care nu are parametri, nu întoarce nici o valoare și servește la inițializarea bibliotecii de comenzi standard.

Iată un exemplu de aplicare a acestei funcții în aplicația Smart Application, al cărei cod sursă va fi dat mai târziu:







Ca primul parametru, trecem funcția la identificatorul ferestrei principale a aplicației. Această fereastră va primi notificări din corpul barei de instrumente sub forma mesajelor WM_COMMAND și WM_NOTIFY.

Parametrul ws specifică stilurile ferestrei barei de instrumente. Deoarece această fereastră este întotdeauna un copil al ferestrei care a creat-o, trebuie să utilizați stilul WS_CHILD. Pentru ca fereastra barei de instrumente să fie vizibilă și vizibilă, specificăm stilurile WS_BORDER și WS_VISIBLE. Dacă doriți ca utilizatorul să schimbe aspectul Barei de instrumente, trebuie să utilizați stilul CCS_ADJUSTABLE.

În plus, pentru controlul barei de instrumente Google puteți specifica următoarele stiluri:

TB_GETTOOLTIPS

Identificați identificatorul comenzii Sfat util asociat acestei bare de instrumente.

Parametrii mesajului trebuie să fie zero.

TB_HIDEBUTTON

Cu acest mesaj, puteți afișa sau ascunde butonul specificat de identificatorul dvs.

Dacă steagul este TRUE, butonul devine ascuns, dacă este afișat FALSE -.

TB_INDETERMINATE

Cu acest mesaj, puteți seta sau anula butonul pentru o stare nedefinită când butonul este aprins.

Dacă drapelul este TRUE, este setată o stare nedefinită dacă FALSE este anulată.

TB_INSERTBUTTON

Introduceți un buton în Bara de instrumente Google.

Dacă butonul a fost inserat cu succes, funcția SendMessage returnează TRUE, altfel FALSE.

TB_ISBUTTONCHECKED

Cu acest mesaj, aplicația poate verifica starea butonului - apăsat sau nu.

Valoarea parametrului lParam trebuie să fie zero.

Dacă butonul este apăsat, funcția SendMessage returnează TRUE, altfel FALSE.

TB_ISBUTTONENABLED

Cu acest mesaj, aplicația poate verifica starea blocării butonului - butonul este blocat sau nu.

Valoarea parametrului lParam trebuie să fie zero.

Dacă butonul este deblocat, SendMessage va reveni la TRUE, în caz contrar FALSE.

TB_ISBUTTONHIDDEN

Cu acest mesaj, aplicația poate verifica dacă butonul este ascuns sau nu.

Valoarea parametrului lParam trebuie să fie zero.

Dacă butonul este ascuns, SendMessage va returna TRUE, altfel FALSE.

TB_ISBUTTONINDETERMINATE

Cu acest mesaj, aplicația poate verifica dacă butonul este într-o stare nedefinită atunci când este afișat în gri.

Valoarea parametrului lParam trebuie să fie zero.

Dacă butonul este într-o stare nedefinită, funcția SendMessage returnează TRUE, altfel FALSE.

TB_ISBUTTONPRESSED

Cu acest mesaj, aplicația poate verifica dacă butonul este în jos.

Valoarea parametrului lParam trebuie să fie zero.

Dacă butonul este apăsat, SendMessage va returna TRUE, altfel FALSE.

TB_PRESSBUTTON

Cu acest mesaj, aplicația poate seta butonul în starea presată sau eliberată.

Pentru a traduce butonul în jos, trebuie să setați fPress pavilion este adevărat, dar în scopul de a pune butonul în starea de depresie - egal cu FALSE.

Dacă starea butonului a fost modificată cu succes, funcția SendMessage returnează TRUE, altfel FALSE.

TB_SAVERESTORE

Prin trimiterea mesajului TB_SAVERESTORE la Bara de instrumente, aplicația poate salva sau restabili starea Barei de instrumente Google. Pentru a stoca starea barei de instrumente, se utilizează o bază de date de înregistrare a sistemului.

Dacă valoarea fSave a pavilionului este TRUE, starea Barei de instrumente va fi salvată. și dacă FALSE - recuperare.

Pointerul către o structură TBSAVEPARAMS este trecut prin parametrul ptbsp. de mai jos:

Lucrul cu baza de date Microsoft Windows 95 de înregistrare a sistemului va fi descris în unul din următoarele volume din "Library System Programmer's Library".

TB_SETBITMAPSIZE

Folosind mesajul TB_SETBITMAPSIZE, aplicația poate seta dimensiunea imaginii afișate pe suprafața butonului.

Valoarea parametrului wParam trebuie să fie zero.

Prin intermediul parametrilor dxBitmap și respectiv dyBitmap, lățimea și înălțimea imaginii sunt transmise.

TB_SETBUTTONSIZE

Folosind mesajul TB_SETBUTTONSIZE, aplicația poate seta dimensiunea butonului.

Valoarea parametrului wParam trebuie să fie zero.

Prin parametrii dxButton și respectiv dyButton, lățimea și înălțimea butonului.

TB_SETCMDID

Cu acest mesaj, puteți atribui un identificator de comandă butonului cu numărul specificat.

TB_SETPARENT

Utilizând mesajul TB_SETPARENT, aplicația poate atribui o fereastră părinte comenzii barei de instrumente.

Valoarea parametrului lParam trebuie să fie zero.

TB_SETROWS

Setați numărul de rânduri de butoane din Bara de instrumente Google.

Numărul de rânduri este trecut prin parametrul cRows. Valoarea minimă a parametrului este o linie, valoarea maximă fiind numărul de butoane din fereastra barei de instrumente.

Dacă parametrul fLarger este TRUE, dacă nu există suficient spațiu pentru a plasa toate butoanele din liniile cRows, va fi creată o linie suplimentară. Dacă parametrul fLarger este FALSE, nu se creează o linie suplimentară.

TB_SETSTATE

Setați butonul cu ID-ul specificat într-o stare nouă.

Lista de posibile stări ale butoanelor este dată mai sus în descrierea mesajului TB_GETSTATE.

TB_SETTOOLTIPS

Folosind mesajul TB_SETTOOLTIPS, aplicația poate atribui o bara de instrumente Barei de instrumente.

Valoarea parametrului lParam trebuie să fie zero.

Rețineți că atunci când creați Bara de instrumente cu stilul TBSTYLE_TOOLTIPS, organul Tip instrument este creat automat pentru acesta. astfel încât nu este necesar să trimiteți mesajul suplimentar TB_SETTOOLTIPS la Bara de instrumente Google. Cu toate acestea, dacă trimiteți un astfel de mesaj, numai butoanele care au fost adăugate la Bara de instrumente vor fi înregistrate în Sfat util înainte de a trimite mesajul TB_SETTOOLTIPS.







Trimiteți-le prietenilor: