Cuprins
- Capitol 1 Programarea în sistemul de operare windows 1
- 1.1 Chestiuni generale despre programarea în windows 1
- 1.2 Utilizarea ferestrelor dialog 3
- 1.3 Procese şi fire de execuţie în Windows 11
- Capitol 2 Windows Sockets (WinSocks) 14
- 2.1 Introducere în Windows Sockets 14
- 2.2 Modelul client – server 22
- Capitol 3 Direct Show 24
- 3.1 Elemente de arhitectură COM 24
- 3.2 Introducere în DirectShow API (Application Programming Interface) 29
- 3.3 Realizarea de captură video către un fişier Windows Media File (WMF) 30
- 3.4 Setarea unui dispozitiv de captură 31
- 3.5 Transmisia de date video prin HTTP folosind obiectul CNetWrite (Microsoft) 33
- Capitol 4 Prezentare Aplicaţie 35
- 4.1 Scopul aplicaţiei 35
- 4.2 Descrierea aplicaţiei 35
- 4.3 Codul sursă al programului 38
- BIBLIOGRAFIE 76
Extras din proiect
Capitol 1.Programarea în sistemul de operare windows
1.1 Chestiuni generale despre programarea în windows
Modelul de programare Windows
În cazul programelor pentru Windows, execuţia instrucţiunilor nu mai urmează ordinea strictă impusă de utilizator ci ordinea dictată de funcţionarea sistemului de operare Windows, care procesează în permanenţă mesaje. Programul utilizatorului este un răspuns la un anumit mesaj (engl. event-driven programming). Programele pentru Windows încep cu funcţia winmain( ), în cadrul căreia este creată fereastra şi programul intră într-o buclă de aşteptare şi procesare a mesajelor (dispatch message).
Atunci când apare un eveniment, Windows trimite un anumit mesaj către funcţia de procesare asociată ferestrei noastre (CALLBACK window procedure). Pe baza mesajelor primite, această funcţie execută majoritatea acţiunilor programului, atât aspectul ferestrei cât şi acţiunile programate de utilizator. Bucla se încheie cu trimiterea mesajului WM_QUIT către fereastră. Aceasta este echivalent cu închiderea ferestrei şi sfârşitul aplicaţiei. De obicei, funcţia CALLBACK face apelurile către toate funcţiile necesare, care sunt locale şi API (Application Programming Interface)
Funcţiile locale sunt create de utilizator, iar API sunt specifice Windows fiind localizate în bibliotecile DLL (Dynamic Link Libraries), mai ales USER32.dll, KERNEL32.dll, GDI.dll şi COMMCTRL32.dll. API dau aspectul grafic specific (look and feel) pentru Windows. Există mii de mesaje specifice, dar un anumit program nu trebuie să le folosească pe toate. In plus, multe funcţii API sunt aparent greoi de folosit din cauza moştenirii lăsate de Windows 3.1 care lucra cu reurse mult mai modeste. Există o funcţie API numită DefWindowProc care poate fi folosită ca un răspuns implicit la procesarea mesajelor.
În cadrul API sunt predefinite mai multe elemente utile pentru programele ce folosesc o interfaţă grafică:
- Funcţii pentru mouse
- Icoane şi imagini (de tip bmp)
- Meniuri, bare de instrumente, bare de stare, casete de dialog
Funcţia de tip CALLBACK
Când mesajele sunt primite, funcţia CALLBACK asociată ferestrei iniţiază acţiuni asupra altor funcţii, mai ales API.
Figura 1.
1.2 Utilizarea ferestrelor dialog
Există 2 tipuri de ferestre dialog :
Dialog-box modal :
Fereastra care deţine dialog-ul este dezactivată. Procesarea este suspendată până când userul termină interacţiunea cu dialog box-ul.
De obicei se crează cu funcţia DialogBox, care dă adresa unei funcţii CALLBACK. DialogBox se termină când funcţia CALLBACK cheamă EndDialog.
Funcţia pentru crearea unui dilog modal: DialogBox
Dialog-box modeless:
Dialogurile modeless nu dezactivează fereastra owner, deci nu suspendă aplicaţia. Totuşi rămân deasupra ferestrelor owner chiar când fereastra owner primeşte focus.
Se crează cu funcţia CreateDialog. Aplicaţiile trebuie să dispatch-uiască ele însele mesajele pentru dialog. Dialogul se distruge cu DestroyWindow.
Message-box :
Se crează cu funcţia MessageBox. Un message-box este by default ‘application modal’, dar poate fi făcut ‘task modal’ sau ‘system modal’.
Application modal (default) = dezactivează doar fereastra owner
task modal = dezactivează toate ferestrele aplicaţiei
system modal = dezactivează toate ferestrele sistemului
Procedura de dialog box
Este o procedură de fereastră obişnuită.
Pentru procesare default cheamă DefDlgProc.
Nu primeşte WM_CREATE, ci WM_INITDIALOG.
Primeşte WM_INITDIALOG după ce au fost create toate controalele de pe dialog şi înainte de a se afişa dialogul. La WM_INITDIALOG procedura de dialog trebuie să iniţializeze controalele.
Majoritatea controalelor trimit WM_COMMAND când interacţionează cu utilizatorul, iar procedura trebuie să identifice controlul şi să acţioneze în consecinţă. De exemplu, la apăsarea butonului OK, trebuie să se termine dialogul (cu EndDialog dacă dialogul este modal).
În timpul execuţiei programului, atunci când trebuie deschis un dialog, nucleul Windows va crea pe baza şablonului din resurse o fereastră pe ecran cu aspectul dorit şi având poziţionate toate controalele vizibile. Tot nucleul va ataşa acestei ferestre o procedură standard pentru tratarea mesajelor pe care o s-o numim « managerul dialogului ». La această procedură se conectează funcţia pe care o scriem noi pentru tratări specifice, numită de acum « procedura dialogului ». Deci, faţă de o fereastră de aplicaţie apar câteva deosebiri ale căror semnificaţii le vom pătrunde în curând. Procedura dialogului este, în linii mari, o procedură de fereastră simplificată. Ea tratează mesajele controalelor ataşate şi, eventual, problemele legate de iniţializarea dialogului şi terminarea lui. O mare parte a gestiunii mesajelor aferente se realizează automat în managerul dialogului, cele mai importante fiind crearea controalelor şi mutarea focus-ului de la unul la altul, în concordanţă cu mesajele de mouse sau tastatură.
Trebuie făcută precizarea că limbajul de descriere a resurselor suferă în continuare modificări aşa încât compilarea depinde de versiunea compilatorului de resurse. Aceasta nu reprezintă însă un impediment major deoarece în mod normal nu intervenim manual în sursele RC decât atunci când avem de făcut modificări minore sau trebuie să specificăm parametrii unor comenzi care nu pot fi generaţi automat la editarea sursei.
Preview document
Conținut arhivă zip
- Interfata Software pentru Administrare si Comunicare Online.doc