You are on page 1of 28

Elektronski fakultet u Ni{u Katedra za ra~unarstvo

Visual Studio
Korisniko uputstvo

Autor: Sr|an Ili} 8751

1. Uvod
Studenti Elektronskog fakulteta u Ni{u sa programskim jezikom C (i njegovom nadogradnjom C++-om) sre}u se na tre}oj godini studija u okviru premeta Programski jezici. Sa Visual C++-om sre}u se na ~etvrtoj godini u okviru predmeta Tehnike i metode programiranja. Zajedni~ko za sve varijente C-a je da se kod pi{e u istom razvojnom okru`enju i to je naj~e{}e Micrsoft Developer Studio a u okviru njega Microsoft Visual C++ dok se re|e koristi Borland-ov Visual C++. Kako je tema ovog rada Microsoft Visual C++ editor u daljem tekstu }e se podrazumevati da se opisuje ba{ ovo razvojno okru`enje a ne Borland C++ iako to ne}e biti eksplicitno nagla{eno. Ovaj dokument opisa}e rad sa verzijom Visual C++ 5.0 koji je sastavni deo Microsoft Developer Studio 97 razvojnog okru`enja. Kako je rad sa ovim okru`enjem relativno slo`en (naro~ito po~etnicima) to }e se ovaj dokument sastojati iz vi{e poglavlja koje }e opisivati rad sa menijima, tulbarovima, dijalog boksovima i td.

2. Osnovni elementi prozora u windows-u


Nakon instaliranja i prvog pokretanja Microsoft Visual C++ 5.0 na ekranu se pojavi prozor koji izgleda ovako: Napomena: Ukoliko Va{a {ema nije Windows Standard sve slike na ekranu bi}e druga~ije (ima}e razli~it oblik i/ili veli~inu slovai i razli~ite boje na ekranu) nego li u

ovom dokumentu. Da bi to izmenili potrebno je pozicionirati se na Start Menu/Settings/Control Panel/Display, izabrati karticu na kojoj pi{e Appearance i iz kombo boksa Scheme izaberati stavku Windows Standard. U gornjem levom uglu prozora na slici nalazi se ikona kontrol menija koja omogu}ava manipulacije sa prozorom (veli~ina, pomeranje i sli~no). Za manipulacije sa prozorom mnogo je lak{e koristiti pozicioniranje mi{a u nekom od uglova prozora ili koristiti Title Bar. Plava traka na kojoj pi{e Microsoft Developer Studio naziva se naslovna linija (Title Bar) i sadr`i ime prozora sa kojim radimo, dok je sam tekst naslov prozora. Ukoliko radimo u nekom projektu ispred }e stajati i naziv projekta kao na slede}oj slici: Naravno, ovde je naziv projekta Proba1. Slede}a je linija sa menijima. Meniji se koriste za izdavanje komandi u ovom razvojnom okru`enju. Na prvoj slici linija menija je pri~vr{}ena za fiksno mesto u prozoru, ispod naslovne linije, ali se ona mo`e pomeriti bilo gde unutar prozora. Jednostavno na ozna~eni deo linije menija pritisnite levi taster mi{a, odvucite menije gde `elite i pustite taster.

Toolbar iliti linija sa alatima omogu}ava pristup naj~e{}e kori{}enim funkcijama bez otvaranja menija, odnosno znatno br`i rad. Na po~etku rada i ona je pri~vr{}ena za gornji deo prozora, a na isti na~in kao i linija sa menijima, mo`e se odvu}i u bilo koji deo prozora ili se pri~vrstiti za neku drugu stranu prozora (recimo desnu ili donju stranu). O svim ostalim delovima prozora bi}e vi{e re~i kada se budu koristili.

3. Rad sa menijima
3.1.File meni
Pre po~etka obja{njenja pojedinih stavki iz menija slede op{ta pravila za rad sa menijima u Windows operativnom sistemu. Ukoliko ispred neke stavke menija postoji sli~ica (ikonica), to je komanda koja se ~esto koristi i njena ikonica se nalazi i u tulbaru (npr. New). U re~i svake stavke (tako|e i u nazivu menija) jedno od slova je podvu~eno. Aktiviranje te stavke menija (ili samog menija) mogu}e je pritiskom podvu~enog slova na tastaturi (dr`ati pritisnut i taster ALT za rad sa menijima). Iza naziva nekih od stavki menija postoje tri ta~ke koje ozna~avaju da }e se aktiviranjem te stavke pojaviti
3

dodatni prozor za detaljnija pode{avanja (npr New). Neke od stavki menija su dostupne (prikazane su crnom bojom (npr New)) dok druge trenutno nisu dostupne (prikazane su sivom bojom kao i sam meni (npr Save Workspace)). Pored nekih stavki na desnoj strani postoji skra}enica za pristup komandi sa tastature (npr New Ctrl+N). Trougao pored nekih stavki ozna~ava da }e se postavljanjem pokaziva~a na tu stavku otvoriti dodatni meni za izbor mogu}nosti (npr. Recent Files).

* New
Stavka New File menija omogu}ava nam kreiranje novog dokumenta, gde se pod dokumentom porazumeva sve, od tekstualne datoteke pa do projekta Visual C++ alplikacije. Aktiviranjem ove stavke pojavljuje se na ekranu prozor kao na slede}oj slici:

Kartica Files nam omogu}ava da kreiramo razli~ite tipove fajlova, da ih uklju~imo u neki od postoje}ih projekata (Add to project:), damo proizvoljno ime (File name:) i snimimo na `eljenoj lokaciji na disku (Location:). Pod fajlom (File ili datoteka) se podrazumeva zapis nekakvog dokumenta na disku. Pod dokumentom se podrazumeva struktura podataka koja ~ini celinu sa kojom radi MsDev (bilo da je to kod programa ili neki resurs). Tipovi fajlova su: Active Server Page Kreiranje posebnih Internet dokumenata Binary File Kreiranje binarnih datoteka Bitmap File Kreiranje bitmap slike C/C++ Header File Kreiranje heder (*.h) fajla C++ Source File Kreiranje sors (*.cpp) fajla sa C++ kodom

Cursor File Kreiranje stati~kih kursora (ova verzija ne podr`ava kreiranje animiranih kursora (*.ani fajlovi)) HTML Page Kreiranje HTML (internet) dokumenta Icon File Kreiranje ikonica (*.ico fajl) Macro File Kreiranje makroa ODBC Script File Kreiranje skript fajla za baze podataka Resource Script Kreiranje nove biblioteke resurasa projekta (ikona, kursora, menija i sl.) Resource Template Kreiranje {ablona biblioteke resurasa projekta Text File Kreiranje najobi~nije tekstualne datoteke bez ikakvih formatiranja teksta

Kartica Workspaces: Omogu}ava kreiranje praznog radnog prostora koji mo`e sadr`ati vi{e projekata u sebi. Kartica Projects omogu}ava kriranje razli~itih tipova projekata. Za svaki projekat defini{emo ime (Project name:) i njegovu lokaciju na disku (Location:). Mogu}nosti su da novi projekat uklju~imo u teku}u radnu okolinu (Add to current workspace) ili da kreiramo novu (Create new workspace ). Mo`emo selektovati i platformu na kojoj }e program raditi ( Platforms: ) ponu|ena (i veoma prihvatljiva) je platforma Windows 32 bitnih aplikacija. Od svih ponu|enih projekata za nas su najzanimljiviji slede}i: MFC AppWizard (exe) Kreiranje kostura Visual C++ projekta za nekoliko vrsta standardnih windows aplikacija. MFC AppWizard (dll) Kreiranje biblioteke funkcija sa dinami~kim povezivanjem (dynamic link library) kori{}enjem MFC klasa. Win32 Console Application Kreiranje konzolne aplikacije tj. aplikacije koja se otvara u MS-DOS prozoru. Ovo je vrlo korisno prilikom pisanja kratkih programa koji ne sadr`e GUI (Graphic User Interface) ve} im je korisni~ki interfejs kao kod DOS programa. Kako kori{}enje MFC klasa u mnogome olak{ava pisanje Windows programa to }e biti dato detaljnije obja{njenje svih koraka pri kreiranju projekata iz prethodne liste sa adekvatnim primerom. Celokupan posao oko kreiranja osnovnih klasa obavlja samo razvojno okru`enje automatski, odnosno da budemo precizniji, MFC AppWizard (ko ka`e da je vreme dobrih vila i ~arobnjaka pro{lo ???) MFC AppWizard (exe): Kako je izrada programa veoma zna~ajna to }e ova opcija biti propra}ena konkretnim primerom. On }e se satojati u kreiranju Windows aplikacije ~iji }e source i exe fajl pratiti ovaj rad. Naziv ovog projekta (aplikacije) je Proba1.Na po~etku svakog koraka bi}e prikazana adekvatna slika iz primera. Primer: Nakon kreiranja projekata pod imenom Proba1 u folderu ssw koji se nalazi u root-u diska C i radi na Win32 platformi u novom radnom okru`enju prozor ima izgled kao na slede}oj slici:

Step 1:

Na pitanje kakav tip aplikacije `elimo da kreiramo (What type of application would you like to create?) ponu|ene su nam slede}e mogu}nosti: Single document omogu}ava rad samo sa jednim dokumentom u jednom trenutku. Ako ste ikada koristili Notepad znate o ~emu govorim. Ukoliko `elimo da radimo sa vi{e dokumenata moramo raditi sa prvim, pa kada zavr{imo sa njim, otvorimo drugi dokument pri ~emu smo zatvorili prethodni, a kada `elimo da radimo sa tre}im dokumentom moramo prethodno zatvoriti drugi dokument i tako dalje Ovo je o~igledno vrlo zamorno a re{enje je vrlo jednostavno. Na ponu|eno pitanje treba dati odgovor: Multiple documents {to omogu}ava rad sa vi{e dokumenata istovremeno ba{ kao i Microsoft Word {to je veliko olak{anje ukoliko delove dokumenata treba prenositi iz jednih u druge preko Clipboarda. Dialog based ukoliko }e glavni prozor aplikacije biti dialog tipa onda je ovo pravi i jedini izbor. Pratite promenu slike u gornjem levom delu prozora. Primetno je da se ona menja u zavisnosti od toga koji je tip aplikacije izabran. Adekvatna promena slike u zavisnosti od izabranih opcija postoji i u narednim koracima tako da ukoliko ovo uputstvo i nije najjasnije, pratite promenu slike, jer jedna slika vredi vi{e od hiljadu re~i. Ukoliko `elite, Va{a aplikacija ne mora biti biti orjentisana ka korisnicima sa engleskog, ve} i sa nema~kog, {panskog, francuskog ili italijanskog govornog podru~ja. Sve {to terba da uradite to je da date adekvatan odgovor na pitanje What language would

you like your resources in? Primer: U 1. koraku izaberano je da program podr`ava rad sa vi{e dokumenata istovremeno (MDI tj. Multiple Document Interface) i da je namenjen korisnicima engleskog govornog podru~ja. Step 2:

Na pitanje kakvu podr{ku bazama podataka u programu `elimo da uklju~imo (What database support would you like to include?) ponu|ene su slede}e mogu}nosti: None Ovu mogu}nost treba selektovati kada nije potrebno da program obezbedi podr{ku bazama podataka. Ovo je default (podrazumevana) opcija. Header files only - Ovu mogu}nost treba selektovati kada je potrebno da program pru`a osnovni nivo podr{ke za rad sa bazama podataka. Wizard }e kreirati heder fajl afxdb.h i poveza}e program sa bibliotekama funkcija ali ne}e kreirati ni jednu klasu za rad sa bazama podataka. Program ima mogu}nost rada sa recordset podacima. Database view without file support - Ovu mogu}nost treba selektovati kada program treba da sadr`i heder fajlove, dinami~ki povezane biblioteke i podr{ku za rad sa podacima tipa recordset. Ova opcija uklju~uje celokupnu podr{ku MFC-a osim rada sa klasama za snimanje podataka na disku pomo}u funkcije serialize. Program }e sadr`atiCRecordView izvedenu klasu kao svoju view klasu, koja je povezana sa CRecordset izvedenom klasom koju }e AppWizard tako|e kreirati. Database view with file support Razlika izme|u ove i prethodne mogu}nosti je u tome {to je mogu}e koristiti funkciju serialiation koja omogu}ava rad sa klasi~nim fajlovima u programu. Za razumevanje prethodne dve opcije neophodno je poznavati rad sa bazama podataka u Visual C++-u. Ukoliko je uklju~ena podr{ka za rad sa bazama podataka (izabrana je 3. ili 4. opcija) postaje dostupno i dugme Data Source koje omogu}ava izbor tipa baze podataka. Primer: U 2. koraku odabrano je da program ne podr`ava rad sa bazama podataka.

Step 3:

Tre}i korak omogu}ava izbor da li da program omogu}i compoud document support. Ukoliko je uklju~ena puna podr{ka (Full-server) onda }e biti mogu}e da dokument koji obra|uje program mo`e da obra|uje i neki drugi program s tim da }e se prilikom obrade na{eg dokumenta u nekom stranom programu ( na{ dokument je sada deo (objekat) stranog dokumenta) pojaviti meniji i tulbarovi na{eg programa, tj. trenutno aktivni program }e pozvati na{ program koji }e odraditi svoj deo posla a kasnije vratiti upravljanje programu koji ga je pozvao. Primer: U 3. koraku izaberano je da program ne podr`ava compoud document support, ali podr`ava Automation i ActiveX Controls.

Step 4:

Na pitanje koje dodatne osobine program treba da sadr`i (What features would you like to include?) ponu|ene su slede}e mogu}nosti: Docking toolbar omgu}ava postojanje tulbara u programu za br`i pristup ~esto kori{}enim komandama iz menija. Initial status bar omogu}ava postojanje statusne linije u programu koja omogu}ava: indikaciju stanja tastera Caps Lock, Num Lock i Scroll Lock kao i za ispis porkuka o zna~enju sadr`aja pojedinih stavki menija i elemenata tulbara. Kao i u prethodnom slu~aju automatski se dodaje i adekvatna funkcija o prikazivanju i skrivanju status bara kao i odgovaraju}a stavka u View meniju. Printing and print preview omogu}ava da program podr`ava {tampanje dokumenata i pode{avanja {tampa~a koriste}i adekvatne funkcije iz klase CView koja pripada MFC biblioteci. Tako|e se dodaju i odgovaraju}e stavke u File meniju.

Context-sensitive Help omogu}ava da program podr`ava aktivnu pomo} prilikom rada pritiskom na taster F1 i istovremeno kreira help fajl koji sadr`i obja{njenja osnovnih funkcija programa dok za specifi~ne funkcije programa postoji mogu}nost dopune help fajla odgovaraju}im podacima. 3D controls - Omogu}ava da objekti u programu (vidi sliku u levom delu prozora) imaju ili nemaju 3D izgled. MAPI (Messaging API) omogu}ava da program radi sa elektronskom po{tom (kreiranje, slanje, primanje i skladi{tenje e-mail-a. Windows Sockets omogu}ava da program komunicira preko TCP/IP mre`a. Mogu}e je odrediti i broj fajlova u recent listi (lista najskorije kori{}enih dokumenata). Klikom na dugme za napredna pode{avanja (Advenced) otvara se novi prozor sa dvema karticama. Na prvoj kartici (Document Template String) postoje slede}e mogu}nosti pode{avanja: File extension ekstenzija fajlova kreiranih od strane programa. File type ID ID dokumenta je string koji se koristi za tip dokumenata u bazi podataka operativnog sistema tzv. Windows Registry. Doc type name ime tipa dokumenta koji kreira program. Main frame caption tekst koji }e se nalaziti u naslovnoj liniji programa. Filter name teks koji }e se pojaviti u Open dijalog boksu prilikom u~itavanja nekog od ve} postoje}ih dokumenata specificiranog tipa. Stavke File type name (short name) i File type name (long name) od zna~aja su samo ako je izabrana opcija da program pru`a Full-server compoud document support.
Na drugoj kartici (Window Styles) postoje slede}e mogu}nosti pode{avanja: Use split window omogu}ava postojanje vi{e pogleda na jedan dokument deljenjem prozora dokumenta. Thick frame omogu}ava da svaki prozor ima grani~nu liniju pomo}u koje se mo`e menjati veli~ina prozora. Minimize box omogu}ava da svaki prozor ima dugme za minimiziranje aktivnog prozora bilo da je re~ o prozoru programa (Main frame styles) ili da je re~ o prozoru dokumenta (MDI child frame styles). Maximize box omogu}ava da svaki prozor ima dugme za pove}anje veli~ine aktivnog prozora aplikacije preko celog ekrana odnosno prozora dokumenta u celom prozoru programa. System menu omogu}ava da prozor programa sadr`i system meni koji omogu}ava manipulacije sa prozorom (pomeranje, promena veli~ine, minimiziranje, pove}anje na veli~inu ekrana, zatvaranje i vra}anje u prethodni polo`aj). Minimized i Maximized opcije omogu}avaju da se prozor programa (dokumenta) prilikom pokretanja otvori minimiziran (kao ikona) odnosno da se otvori maksimalne veli~ine (preko celog ekrana za prozor programa, preko celog prozora programa za prozor dokumenta) respektivno. Primer: U 4. koraku izaberano je da program sadr`i sve osobine koje mu mo`e dodeliti MFC AppWizard.

10

Step 5:

Na pitanje da li da se u kodu programa generi{u i komentari (Would you like to generate source file comments?) mogu}e je dati potvrdan (Yes, please) ili negativan (No, thank you) odgovor. Po`eljno je dati potvrdan odgovor jer se je tada znatno lak{e sna}i u kodu koji je generisao Wizard. Komentari sugeri{u gde treba dodati novi kod za pro{irenje funkcionalnosti. Na pitanje kako korstiti funkcije iz MFC-a (How would you like to use the MFC library?) po`eljno je da se u toku razvoja programa koristi mogu}nost deljivih funkcija (As a shared DLL) a da se tek po uspe{nom okon~anju razvoja software-a zavr{na verzija iskompajlira sa stati~kim funkcijama (As a statically linked library) kako bi program mogao da radi i na sistemima bez biblioteka MFC klasa. Primer: U 5. koraku izaberano je da linijama koda budu dodate linije komentara i da na{ program funkcije iz MFC a koristi kao deljive funkcije.

11

Step 6:

[esti korak ima formu obave{tenja koje }e sve klase Wizard kreirati, u kojim }e fajlovima biti zaglavlja i tela klasa i {to je najva`nije iz kojih }e MFC klasa biti izvedene klase programa. Ovde je zna~ajno da klasa C***View (gde je *** naziv projekta) bude izvedena iz klase CScrollView a ne iz klase CView jer ako dokument programa bude ve}i od veli~ine jednog prozora automatski }e se pojaviti Scroll Bar-ovi za skrolovanje po dokumentu. Ukoliko to ne bi uradili morali bi sami da implementiramo funkcije za skrolovanje {to je znatno te`e od pravilnog izbora osnovne klase. Klikom na dugme Finish, prihvataju se ponu|ene vrednosi nakon ~ega Wizard obave{tava korisnika o tome {ta }e sve u~initi. Klikom na dugme OK sve je gotovo. Kostur projekta je potpuno spreman za dalji rad {to se mo`e proveriti pokretanjem programa (iz Build menija pokrenite stavku Execute ***.exe gde je *** ime projekta). Primer: U 6. koraku jedina izmena koju unosite je ta da osnovna klasa na{e CProba1View klase bude CScrollView a ne klasa CView: Na slede}oj slici prikazan je izgled glavnog prozora Microsoft Developer Studia nakon kreiranja kostura aplikacije i nakon otvaranja datotekaProba1Doc.cpp i Proba1Doc.h. U levom delu prozora se vidi tzv. Tree view prikaz klasa u projektu i njihovih elemenata. U desnom delu prozora se vide sadr`aji pomenuta dva dokumenta:

12

Kartica Other Documents: Omogu}ava kreiranje drugih dokumenata i njihovo uklju~enje u projekat. Spisak dokumenata zavisi od software-a koji je instaliran na ra~unaru na kome je Developer Studio. O~igledno je da je doti~nom ra~unaru instaliran Microsoft Office 97:

13

* Open
Stavka Open.. File menija omogu}ava otvaranje fajla koji postoji negde na disku. Aktiviranjem ove stavke otvara se slede}i prozor:

Specifi~nost ovog prozora je u tome jer je fajl mogu}e otvoriti samo za ~itanje iako taj atribut fajla i nije setovan ustvari (Open as read-only). Prednost ovoga ogleda se u tome jer ukoliko je neki fajl ovako otvoren ne postoje nikakve mogu}nosti za izmenu sadr`aja tog fajla tako da su sve slu~ajne (ili namerne) izmene nemogu}e.

* Close
Stavka Close.. File menija omogu}ava zatvaranje fajla koji je trenutno aktivan. Ukoliko postoje izmene sadr`aja fajla koje nisu snimljene (zvezdica iza imena fajla u title baru) javlja se upozorenje uz mogu}nost snimanja izmena ili ne, po `elji.

* Open, Save & Close Workspace


Omogu}avaju otvaranje, snimanje i zatvaranje radnog prostora respektivno. Ovde se pod radnim prostorom porazumeva celokupan sadr`aj prozora MS Developer Studijoa odnosno, koji su sve fajlovi otvoreni i gde se nalaze njihovi prozori u odnosu na glavni prozor okru`enja.

* Save, Save As & Save All


Save omogu}ava snimanje aktivnog fajla. Teku}i sadr`aj se snima u datoteku na disku dok se prethodni sadr`aj datoteke gubi (overwrite). Save As omogu}ava snimanje trenutno aktivnog fajla na disku pod drugim imenom tako da na disku ostaju sa~uvane i teku}a i prethodna verzija datoteke. Naravno, mogu}e

14

je snimanje fajla i u nekom drugom folderu diska, na disketi ili na bilo kom ra~unaru u mre`I, ukoliko ste umre`eni. Save All pona{a se kao i opcija Save ali deluje istovremeno na sve otvorene datoteke.

* Page Setup
Omogu}ava pode{avanja izgleda {tampane strane i to headera, footera i margina teksta.

* Print
Omogu}ava {tampanje trenutno aktivnog fajla ili {tampanje samo selektovanog dela teksta.

*Recent Files & Recent Workspaces


Nakon aktiviranja bilo koje stavke otvara se podmeni u kome se nalazi nekoliko najskorije kori{}enih fajlova (radnih prostora) respektivno, {to zantno ubrzava rad ukoliko fajlovi nisu u istom folderu.

*Exit
Izlaz iz MS Developer Studija. Ukoliko je neki od fajlova menjan a nije snjimljena izmena pojavi se upororenje koje nudi snimanje izmena ukoliko je potrebno.

3.2. Edit meni


* Undo
Poni{tava dejstvo poslednje komande. Ukoliko je gre{kom obrisan deo koda, nije potrebno kucati opet. Dovoljno je samo aktivirati ovu komandu i tekst je opet na svom mestu. Program pamti vi{e komandi, tako da je mogu}e poni{titi dejstvo nekoliko poslednih radnji.

* Redo
Ukoliko je gre{kom poni{tena neka akcija tu je Redo. Ova komanda poni{tava dejstvo komande za poni{tavanje. Jednostavno re~eno Redo ima suprotno dejstvo od komande Undo.

* Cut
Ova komanda postaje dostupna tek kada je deo koda selektovan (ili bilo koji drugi tekst). Njenim aktiviranjem se selektovani tekst bri{e iz dokumenta i prebacuje se na Clipboard (posebna memorija ~iji je sadr`aj dostupan svim aktivnim programima).

* Copy
Ova komanda postaje dostupna tek kada je deo
15

koda selektovan (ili bilo koji drugi tekst). Njenim aktiviranjem se selektovani tekst ne bri{e iz dokumenta nego samo kopira na Clipboard.

* Paste
Sadr`aj Clipboard-a ubacuje se u aktivni dokument od pozicije na kojoj se trenutno nalazi kursor teksta. Ukoliko je deo teksta selektovan, aktiviranjem ove komande selektovani tekst bi}e obrisan bez slanja na Clipboard.

* Delete
Ovom opcijom se selektovani objekat (deo koda, deo slike i sl.) bri{e iz aktivnog dokumenta bez slanja na Clipboard. Ukoliko je ova komanda aktivirana gre{kom mogu}e je izvr{iti poni{tenje njenog dejstva komandom Undo.

* Select All
Omogu}ava da celokupan sadr`aj neke tekstualne datoteke bude selektovan vrlo brzo bez obzira na njenu veli~inu. Dovoljno je pozicionirati se bilo gde u tekstu i pritisnuti istovremeno tastere Ctrl+A i sve je gotovo.

* Find
Omogu}ava pronala`enje zadatog stringa u trenutno aktivnom tekstu. Dodatne mogu}nosti za pode{avanje tra`enja su: Find what: string koji se tra`i. Match whole word only: tra`i samo ona mesta na kojima se Find what: string javlja samostalno (a ne kao deo re~i). Match case: prilikom pretra`ivanja razlikuju se velika i mala slova. (Npr. ukoliko tra`imo re~ CMyclass a u tekstu postioji re~ CMyClass ona ne}e biti prona|ena) Regular expression: tra`i ba{ onakav string kakav smo mi zadali u Find what edit boksu. Search all open documents: zadati string se tra`i u svim otvorenim dokumentima u Developer Studiju. Direction (Up or Down): omogu}ava izbor smera tra`enja od teku}e pozicije kursora u tekstu. Mark All: opcija prilikom izvr{enja obele`i}e sva pojavljivanja zadatog stringa u tekstu specijalnim markerom na po~etku svake linije u kojoj se tra`eni string nalazi. Mesta mo`ete obilaziti pritiskom na taster F2.

* Find in Files
Omogu}ava pronala`enje zadatog stringa u fajlovima odre|enog tipa (In

16

files/file types) u odre|enom folder na disku (in folder) sa mogu}no{}u tra`enja i u subfolderima (Look in subfolders). Tako|e je mogu}e da se rezultati pretra`ivanja prika`u u Find in Files 2 kartici Output prozora {to nam omogu}ava istovremeni uvid u dva rezultata pretra`ivanja.

* Replace
Ova komanda omogu}ava zamenu jednog stirnga drugim. Stringovi se zadaju u poljima Find

what i Replace with. Mogu}nosti su slede}e: Find next pronalazi string u dokumentu koji treba menjati. Pritiskom na dugme Replace stari string bi}e zamenjen novim. Za slede}e pronala`enje starog stringa i njegovu zamenu novim treba ponavljati prethodna dva koraka dovoljan broj puta ili kliknuti na dugme Replace All ~ime }e se automatski svi stari stringovi prona}i i zameniti se novim stringovima ili u celom dokumentu (Whole file) ili samo u selektovanom delu fajla (Selection).

Napomena:
Ostale stavke iz Edit menija su namenjene naprednijim korisnicima Developer Studio-a i u ovom radu ne}e biti razmatrane.

3.3. View meni


* Script Wizard & Class Wizard
Ove stavke menija olak{avaju rad sa skriptovima odnosno klasama, respektivno, tako da }e biti detaljnije obja{njene u primeru na kraju ovog rada.

* Resource Symbols
Svakom od resursa koji se koriste u projektu dodeliljuje se jedinstveni identifikator kao recimo IDD_ABBOUTBOX. U toku kompajliranja sva ta simboli~ka imena zamenjuju se celim brojevima. Ova stavka omogu}ava kreiranje parove simboli~ko ime - broj, kao i mogu}nost menjanja postoje}ih parova.

* Resource includes
Defini{e u kom header fajlu se nalaze podaci o resursima na{eg programa i omogu}ava izvesne modifikacije istog.

17

* Full Screen
Omogu}ava rad sa fajlovima u punom ekranu odnosno bez menija i bez tajlbara tj. aktivan dokument je na celoj strani ekrana.

* Workspace
Omogu}ava (ne)vidljivost Workspace prozora koji znatno olak{ava rad sa fajlovima, resursima, klasama, helpom .

* InfoViewer Topic
Aktivira poslednju pose}enu stranu iz helpa koji ide uz MS Developer Studio 5.0 i aktivira Info View karticu iz Workspace prozora.

* Result List
Aktivira istoimeni prozor koji sadr`i rezultate tra`enja po indeksu u helpu.

* Output
Aktivira istoimeni prozor koji sadr`i izve{taj o gra{kama prilikom kompajliranja, debug-iranja, rezultate tra`enja nekog stringa u fajlovima i sli~no.

* Debug Windows & Refresh


Ove stavke su namenjene naprednijim korisnicima Developer Studio-a tako da u ovom radu ne}e biti razmatrane.

* Properties
Aktiviranjem ove opcije pojavi se prozor sa osnovnim podacima o trenutno aktivnom objektu bilo da je to fajl, slika, klasa itd.

3.4. Insert meni


* New Class
Omogu}ava krairanje nove klase sa slede}im osobinama: Class type gde se odre|uje da li }e klasa biti izvedena iz neke MFC klase ili ne. Ukoliko je izbrana MFC klase treba upisati ime klase dok se automatski dodaju imena fajlova za zaglavlje i implementaciju klase. Mogu}e je klikom na dugme Change promeniti imena i lokaciju ovih fajlova na disku. Treba izbrati i osnovnu klasu (Base Class) odnosno MFC klasu iz koje izvodimo na{u klasu. Ukoliko je izabrano da novoformirana klasa ne bude MFC ve} Generic Class tada je neophodno upisati ime klase iz koje je izvedena novoformirana klasa i na~in izvo|enja. Naravno, treba upisati i ime klase dok se imena fajlova automatski generi{u kao i u prethodnom slu~aju.

18

* Resource
Omogu}ava kreiranje razli~itih tipova resurasa (slika, kursora, ikonica, menija i sl.) bilo da ih potpuno kreiramo kao nove (New dugme) ili da ih uvezemo u projekat ako ve} postoje negde na disku (Import). Postoji i mogu}nost kreiranja novog tipa resursa {to nije od zna~aja za po~etnike.

* Resource Copy
Omogu}ava prebacivanje resurasa iz jednog u drugi prjekat, ukoliko su oni otvoreni istovremeno, jednostavnom drag and drop metodom.

Napomena:
Ostale stavke iz View menija su namenjene naprednijim korisnicima Developer Studio-a tako da u ovom radu ne}e biti razmatrane.

3.5. Project meni


* Set Active Project
Omogu}ava da se u postoje}i radni prostor (Workspace) ubaci novi projekat.

* Add To Project
Omogu}ava da u trenutno aktivni projekat uklju~imo: New vidi stavku *New iz glave 3.1. File meni. New Folder bilo koji folder Files ova mogu}nost je ekvivalenta opciji File menu/Open (vidi stavku *Open iz glave 3.1.File meni.

Napomena:
Ostale stavke iz Project menija su namenjene naprednijim korisnicima Developer Studio-a tako da u ovom radu ne}e biti razmatrane.

3.6. Build meni


* Compile ***.cpp
Ova opcija omogu}ava kompajliranje trenutno aktivnog cpp fajla. U samom meniju umesto *** stoji stvaran naziv cpp fajla. Nema nikakvog smisla poku{ati kompajliranje heder fajlova.

* Build ***.exe
Omogu}ava bildovanje projekta. Kako je savremena Windows aplikacija kompleksan program ~iji je kod raspore|en u nekoliko fajlova, za adekvatno prevo|enje, neophodno je sve te komponente povezati
19

na odgovaraju}i na~in kako bi nastao exe fajl. Ceo taj proces se jednim imenom naziva bildovanje projekta.

* Rebuild All
U nekim situacijama nije dovoljno da izmene na~injene u kodu automatski budu preslikane u kod programa. Da bi sve izmene bile a`urirane neophodno je izbildovati ceo projekat ponovo i u te svrhe se i koristi ova komanda.

* Batch Build
Omogu}ava bildovanje vi{e tipova projekata (Debug ili Realase).

* Clean
Prilikom bildovanja programa Developer Studio kreira i mnoge pomo}ne fajlove koji su njemu neophodni. Kako su ti fajlovi neophodni samo prilikom bildovanja, a mogu biti prili~no veliki, pametno je te fajlove ukloniti. Celokupan kod programa postoja}e i dalje na disku kao i izvr{ni fajl. Dobit je vi{e slobodnog prostora na disku, dok je nedostatak znatno du`e vreme novog bildovanja programa.

* Start Debug
Napravili ste program i verujete da je sve OK. Kompilator ne javlja gre{ku, ali program ne radi ono za {ta je razvijan. Najpametnije je program izvr{avati u Debugger-u. U bukvalnom prevodu ova re~ zna~i ~i{}enje od buba i ovaj termin je nastao jo{ u doba prvih ra~unara kada su se oni sastojali od elektronskih cevi i kada su male bubice mogle da naprave (i pravile su) kratke spojeve {to je dovodilo do, recimo pada sistema. Danas se ovaj termin koristi za detaljno pra}enje toka podataka kroz program i slu`i za otkrivanje i eleminisanje eventualnih gre{aka. Radi lak{eg shvatanja kako radi Debugger analizirajmo slede}i primer:

Primer 2:
Napi{imo program na C-u koji }e sumirati prvih n prirodnih brojeva. Iz Fajl menija selektujemo stavku New a iz novonastalog prozora selektujmo karticu Files. Od mnogih tipova fajlova odaberimo C++ Source File dajmo mu neko ime u Edit boksu File name i kliknimo na OK. Sada mo`emo uneti slede}i kod:
#include "stdio.h" int i,n,suma; void main() { printf("Unesite neki prirodni broj ->"); scanf("%d",&n); suma=0; for (i=1;i<=n;i++) suma+=n; printf("\nSuma prvih %d prirodnih brojeva iznosi %d\n",n,suma); printf("Unesite znak za izlazak iz programa ->"); scanf("%d,&i); }

Analizirajmo gornji program:

20

U prvoj liniji pozivamo biblioteku standardnih funkcija a u drugoj defini{emo tipove promenljivih sa kojima radimo. U main() fukciji u~itamo neki broj n naredbom scanf, inicijaliziramo po~etnu vrednost sume na 0 i ulazimo u petlju koja sumira prvih n prirodnih brojeva. Ali, o~igledno je da se u petlji ne sumiraju sukcesivno prirodni brojevi ve} se suma pove}ava za n ta~no i puta, tj. va`i suma=n*i a kako i ide od 0 do n to ustvari va`i suma=n*n=n2 . Tako je na{ program, iako bez sintaksnih i semanti~kih gre{aka neispravan, jer ne radi ono {to se od njega o~ekuje. Ovo je jedostavan primer i o~igledno je gde je gre{ka, ali da radite u nekom projektu sa desetak fajlova i sa par hiljada linija koda trebalo bi dosta vremena da se to uo~i. Kako je ovo konzolna aplikacija nakon izvr{enja programa njen prozor se zatvara tako da nije mogu}e videti rezultat operacije. Zbog toga su uba~ene poslednje dve linije koda koje od korisnika o~ekuju da unese neki znak za izlaz iz programa nakon ~ega se prozor zatvara.

Pritiskom na taster F10 (Debug/Step Over) po~ine se rad sa Debug-erom. Sada u glavnom meniju umesto stavke Build postoji stavka Debug. Automatski se pojavi prozor Variables koji sadr`i sve promenljive koje se koriste u na{em programu i njihove trenutne vrednosti. Tako|e se pojavi `uta strelica koja pokazuje koja linija koda treba trenutno da se izvr{i. Kako je program pasivan i u title bar-u stoji [break]. Narednim pritiskom na taster F10 dolazimo do naredbe printf Sada mo`emo pritiskom na F10 jednostavno izvr{iti ovu bibliote~ku funkciju, ili pritiskom na F11 (Debug/Step Into) pre}i u printf.c fajl gde je kod te funkcije. Ovo je veoma korisno kada radite sa klasama i za neke objekte pozivate silne funkcije iz klasa. Ukuliko bi u takvom slu~ju pritisli F10 funkcija bi bila izvr{ena i vratila bi neku vrednost, a ukoliko bi pritisli taster F11 u{li bi u kod funkcije i mogli bi da pratimo izvr{enje funkcije korak po korak. Ako to ne `elimo dovoljno je pritisnuti Shift+F11 (Debug/Step Out) ~ime izlazimo iz analize funkcije i vra}amo se na mesto njenog poziva. Daljim pritiskom na F10 izvr{ava se funkcija scanf koja od korisnika o~ekuje unos podataka. Sada u title bar-u stoji [run] {to zna~i da je program aktivan i dalje Debug-iranje nije mogu}e. i zaista pritiskom na F10 ne de{ava se ni{ta.

21

Pre|imo u prozor na{eg programa i unesimo broj 100. Automatski se vra}amo u MSDev gde vidimo da je sadr`aj memorijske lokaije u kojoj se nalazi promenljiva n ima vrednost 100 i da je crvene boje {to ozna~ava da je taj podatak setovan u teku}em koraku. Daljim Debug-iranjem na F10 inicijalizuje se suma na 0 i ulazi se u petlju. Na gornjoj slici je prikazan sadr`aj ekrana pilikom drugog prolaska kroz petlju kao i postavljeni Brake Point u desetoj liniji koda. Ukoliko petlja ne traje dugo mo`emo se i vrteti kroz nju, ali za neke glomazne petlje pametnije je u~init slede}e: Pozicioniramo se na prvu narednu liniju koda van petlje. U na{em slu~aju to je linija printf(\nSuma. Kliknemo desnim tasterom i iz menija izaberemo stavku Run to Cursor ~ime se izrvr{avaju sve linije koda od teku}e pozicije do pozicije kursora. Na veoma sli~an na~in koriste se i Break Point-i {to je i prikazano na slici iznad. To su specijalne ta~ke u kodu. Kada se krene sa Debug-iranjem kod se izvr{ava bez zaustavljanja sve do prvog Break Point-a gde se zaustavi. Sada je mogu}e analizirati vrednosti promeljivih i nakon toga nastaviti ispravljanje gre{aka na isti na~in ili pre}i na taster F10.

* Execute ***.exe
Omogu}ava izvr{enje programa *** ukoliko je kod bez gre{aka, ina~e ih javi.

Napomena:
Ostale stavke iz Build menija su namenjene naprednijim korisnicima Developer Studio-a tako da u ovom radu ne}e biti razmatrane.

3.7. Tools meni


Sve mogu}nosti iz ovog menija namenjene su naprednim korisnicima MSDev-a tako da u ovom radu ne}e biti razmatrane.

3.8. Window meni


* New Window
Omogu}ava otvaranje novog prozora sa istim dokumentom.

* Split
Omogu}ava deljenje aktivnog prozora na dva dela.

* Docking View
Omogu}ava vezivanje prozora za neku od strana prozora poput WorkSpace prozora.

* Close
Omogu}ava zatvaranje aktivnog prozora uz upozorenje ukoliko postoje izmene a nisu snimljene, uz mogu}nost snimanja.

22

* Close All
Kao i opcija Close koja deluje na sve otvorene prozore u projektu.

* Next & Previous


Omogu}ava prelazak na slede}i odnosno prethodno otvoreni prozor.

* Cascade, Tile Horizontally & Vertically


Omogu}ava kaskadno,horizontalno ili vertikalno raspore|ivanje svih otvorenih prozora dokumenata na ekranu respektivno.

* 1 abc
Omogu}ava aktiviranje (prebacivanje u prvi plan) prozora sa selektovanim dokumentom (u konkretnom slu~aju dokumenat pod imenom abc).

* Windows
Omogu}ava sve {to i prethodne stavke uz mogu}nost da opcije deluju samo na selektovane prozore, a ne na sve, ili samo na jedan prozor.

3.9. Help
* Contents
Aktiviranjem ove opcije u Workspace prozoru postaje aktivna InfoView kartica koja sadr`i sadr`aj helpa MSDev-a.

* Search
Aktiviranjem ove komande otvara se prozor za tra`enje nekog naslova ili dela teksta u helpu.

* Documentation Home Page


Aktiviranjem ove komande otvara se naslovna strana helpa koji je ina~e potpuno ura|en u HTML formatu poput Internet dokumnata. Adresa ove strane je: mk:@ivt:vcedit/homepage/vchmpg.htm.

* Keyboard Map
Aktiviranjem ove komande otvara se prozor koji sadr`i sve skra}enice sa tastature za sve funkcije u bilo kom editoru Microsoft Developer Studio-a.

* Tip of the Day


Prilikom startovanja ovog razvojnog okru`enja pojavi se tajno obave{tenje koje nam mo`e znatno olak{ati rad u nekim segmentima rada. Ukoliko niste strpljivi da ova obave{tenja ~itate samo prilikom ulaska u MSDev, mo`ete ih aktiviranjem ove stavke is~itati sve odjednom.

* Technical Support
Aktiviranjem ove komande pru`aju nam se dodatne informacije o tome kako dobiti On-Line pomo} od strane Microsoft-a.

23

* Microsoft on the Web


Ova opcija pru`a nam mogu}nost pristupa najzanimljivijim Microsoft-ovim stranama na Internetu ukoliko imamo pristup istom.

* About Developer Studio


Ova opcija nam daje podatke o verziji paketa, serijskom broju i vlasniku.

Napomena:
Ostale stavke iz Help menija su namenjene naprednijim korisnicima Developer Studio-a tako da u ovom radu ne}e biti razmatrane.

Primer3:
U narednom primeru bi}e kreirana jednostavna windows aplikacija. Cilj je pokazati kako kreirati meni, stavku u meniju, prozor, edit boks i sve to lepo povezati. Ponovimo korake od 1 do 6 prilikom kreiranja MFC AppWizard (exe) aplikacije kao {to je ranije opisano. Kreiran je kostur windows aplikacije. Ovakva aplikacija poseduje osnovne windows funkcionalnosti ali ne obavlja ni jedan konkretan posao. Kreirajmo novu stavku osnovnog menija i u njemu jo{ jednu stavku na slede}i na~in: Aktivirajmo Work Space prozor i u njemu selektujmo katicu ResourceView. Otvorimo foldere Proba1 resources i Menu i pozicionirajmo se na objekat IDR_PROBA1TYPE kao {to je prikazano na slici iznad. Dva puta kliknite na ozna~eni objekat kako bi se otvorio u adekvatnom editoru kao na slici levo. Na bilo kojoj stavci u meniju kliknite desnim tasterom i iz novog menija izaberite opciju Properties. Novi prozor pri~vrstite za ekran klikom na dugme u gornjem levom uglu prozora. Pozicionirajte se na slobodnu stavku u meniju i pre|ite opet u Menu Item Properties dijalog prozor, u edit boks Caption i unesite naziv menija. Recimo da se na{ meni zove Izmena. Odmah po ukucavanju prvog slova automatski je kreirana
24

nova prazna stavka u meniju za nove menije ukoliko bude bilo potrebno. Znak & ispred nekog od slova u meniju ozna~ava da }e to slovo biti podvu~eno, odnosno da se pomo}u tog slova mo`e pristupiti meniju i preko tastarure. Na potpuno isti na~in kreirajmo i stavku Tekst. Na{a stavka u meniju je poslednja u nizu. Ako `elimo da je prebacimo ispred dovoljno ju je prevu}i bilo gde drugde. Nakon ovoga meni je kao na slici . Va`no je zapamtiti da je ID na{e stavke menija ID_IZMENA_TEKST. Kreirajmo novi prozor koji }emo kasnije povezati sa na{im menijem tako da se aktiviranjem stavke iz menija otvara na{ prozor: Aktivirajmo Work Space prozor i u njemu selektujmo katicu ResourceView. Kliknimo desnim tasterom na folder Dialog i izberimo stavku Insert Dialog. Automatski je kreiran default dijalog koji mo`emo proizvoljno menjati. Tako|e automatski nam je ponu|eno da kreiramo adekvantu klasu za novi objekat. Na slede}oj slici prikazan je adekvatan New Class dijalog:

Kako je taj objekat dijalog i na{a klasa bi}e izvedena iz MFC klase CDialog i automatski su povezani nova klasa i novi objekat {to se mo`e videti u Work Space prozoru u kartici ClassView. Iz Controls tulbara uzmimo Static text i kreirajmo odgovaraju}i tekst. Pomo}u edit box alatke kreirajmo neki edit boks.

25

Ubacimo sada sli~icu u na{ prozor. Pre prozora sli~icu moramo ubaciti u projekat na slede}i na~in: U ResourceView prozoru kliknimo desnim tasterom i izberimo opciju Impot. Prona|imo `eljenu sli~icu na disku i kliknimo na OK. U resursima kreira}e se novi folder Bitmap i na{a sli~ica u njemu pod imenom IDB_BITMAP1. Vratimo se dijalogu i iz Controls tulbara ubacimo bitmapu. Da bi ta bitmapa bila ba{ na{a sli~ica neophodno je povezati sliku i okvir tako {to iz Properties dijaloga u stavci Type selektujemo Bitmap, a u Image odaberemo ba{ na{u IDB_BITMAP1. Nakon svega ovoga

prozor MSDev-a treba biti kao na slici iznad. Sada treba povezati edit boks iz dijaloga sa promenjlivom ~lanicom na{e klase (CKlas1). Kliknemo desnim tasterom na edit box i iz novog menija izaberemo stavku ClassWizard. Otvara nam se MFC Class Wizard dijalog u kome treba selektovati karticu Member Variables. Ime projekta i klase je pode{eno, a mi samo trebamo izbrati stavku IDC_EDIT1 koja ozna~ava edit boks. Kliknemo na dugme Add Variable i u novom prozoru defini{emo ime i tip promenljive. Time je promenljiva iz klase povezan sa objektom dijaloga. Kliknemo sada na karticu Message Maps i selektujmo klasu CProba1Doc iz Class name boksa. U spisku Object IDS prona|imo na{ ID (ID_IZMENA_TEKSTA) i iz Messages boksa izaberimo stavku COMMAND. Sada postaje dostupno dugme Add Function na koje treba kliknuti i prihvatiti ponu|en naziv funkcije. Funkcija jeste kreirana, ali treba implementirati kod pa kliknemo na istoimeno dugme (Edit Code). Nakon svega ovoga slika u prozoru je slede}a:

26

Neophodno je na po~etku *Doc.cpp fajla ubaciti liniju kojom se uklju~uje zaglavlje klase dijaloga. Konkretno ovo zna~i da u fajl Proba1Doc.cpp treba ubaciti slede}u liniju koda: #include Klasa1.h dok je kod funkcije slede}i:
void CProba1Doc::OnIzmenaTekst() { // TODO: Add your command handler code here CKlasa1 a; a.m_broj=8751; a.DoModal(); a.m_broj=1976;}

Komentar koji postoji posledica je na{e `elje da nam AppWizard kreira i komentare. a je objekat klase CKlasa1 i njegovoj promenljivoj m_broj dodeljuje se vrednost 8751. DoModal() je funkcija iz osnovne (CDialog) klase i ona kreira prozor na ekranu sve dok se

27

ne pritisne OK ili Cancel dugme. Ukoliko je brojna vrenost promenjena promenljiva m_broj ima neku tu novu vrednost (m_broj=1202). U narednoj liniji ta vrednost bi}e setovana na 1976 {to se mo`e proveriti Debugiranjem programa kao na slede}oj slici:

Svi oni koji budu `eleli da nau~e vi{e i bolje Visual C++ neka pro|u kroz tutoriale koji idu uz ovu verziju MS Developer Studio-a. Po~etna adresa tutoriala u helpu je: mk:@ivt:vctutor/D1/tutorhm.htm

28

You might also like