C++ pod Windows: 5. časť: Zostavovanie aplikácie

cplusplus.jpg Ví­tam vás pri po­sled­nej čas­ti se­riá­lu v tom­to ro­ku a mož­no aj sto­ro­čí (či ne­bo­daj ti­síc­ro­čí?). Je to za­ují­ma­vé, ale my, čo te­raz ži­je­me, sme za­ži­li a eš­te aj za­ži­je­me to, čo sa mož­no ne­po­da­ri­lo ni­ko­mu. Veď po­čí­taj­te so mnou. Za­tme­nie Sl­nka a Me­sia­ca, vi­di­teľ­né z ok­na náš­ho do­mu, pre­lom ti­síc­ro­čia, rôz­ne ko­mé­ty, di­vo­ké po­sta­ve­nia pla­nét a ďal­šie uda­los­ti, kto­ré sa nor­mál­ne de­jú jed­na po dru­hej s od­stu­pom dob­rých 100 až 200 ro­kov. A my sme ich všet­ky za­ži­li v prie­be­hu 5 ro­kov. K to­mu by sa dal pri­rov­nať az­da len ot­re­pa­ný cir­ku­so­vý vý­rok: „Uvi­dí­te, čo eš­te nik­to nik­dy ne­vi­del!“ A v tom­to prí­pa­de je aj prav­di­vý.

No ale vráť­me sa k na­šej té­me. Chá­pem, že sa vám asi ťaž­ko chce v tom­to ča­se roz­mýš­ľať o ta­kých ve­ciach, ako sú C++ a prog­ra­mo­va­nie, ale čo už... Tre­ba za­ťať zu­by a pus­tiť sa do uče­nia. Na tom­to mies­te by som chcel po­ďa­ko­vať všet­kým, kto­rí pí­šu svo­je po­stre­hy o tom­to se­riá­li. Vďa­ka to­mu, že si mô­žem pre­čí­tať, čo od ne­ho ča­ká­te a čo by ste v ňom uví­ta­li, mô­žem vám je­ho štruk­tú­ru stá­le viac pris­pô­so­bo­vať. Nap­rík­lad už v tej­to čas­ti náj­de­te veľ­mi dob­ré lin­ky na rôz­ne strán­ky za­obe­ra­jú­ce sa prog­ra­mo­va­ním v C++. V kaž­dej no­vej čas­ti náj­de­te aj no­vé lin­ky. Zá­ro­veň chcem vy­zvať vás všet­kých: ak má­te ne­ja­ké ná­pa­dy či po­žia­dav­ky, čo by ste v se­riá­li chce­li/nec­hce­li vi­dieť, na­píš­te mi. Ak to bu­dú dob­ré ná­pa­dy, ur­či­te sa zreali­zu­jú.

V pred­chád­za­jú­cej čas­ti sme za­ča­li s opi­som kniž­ni­ce MFC. Uvied­li sme je­den ukáž­ko­vý prík­lad: First, kto­rý sme si aj struč­ne opí­sa­li. Ak má­te po­cit, že ste nie­čo ne­poc­ho­pi­li, ne­maj­te strach, ku všet­ké­mu sa dos­ta­ne­me. Za­čne­me tým naj­zák­lad­nej­ším, te­da pro­ce­som zos­ta­vo­va­nia ap­li­ká­cie. BUILD PRO­CESS. Aby sme za­ča­li úpl­ne od zá­kla­dov, tre­ba ob­jas­niť po­jem pro­jekt. Pro­jekt pred­sta­vu­je súhrn nav­zá­jom sú­vi­sia­cich sú­bo­rov, kto­ré sú kom­pi­lo­va­né a lin­ko­va­né, aby vy­tvo­ri­li spus­ti­teľ­ný sú­bor ale­bo kniž­ni­cu DLL. To­to je za­uží­va­ná de­fi­ní­cia, kto­rá sa po­uží­va pri pro­jek­toch vo Win­dows. Aby ste si to ve­de­li lep­šie pred­sta­viť, pro­jek­tom mô­že­me ozna­čiť všet­ky sú­bo­ry, kto­ré vy­tvo­rí prek­la­dač v ad­re­sá­ri pro­jek­tu, plus ne­ja­ké ďal­šie, kto­ré sú ulo­že­né v ad­re­sá­roch ty­pic­kých pre prek­la­dač (to­to sú napr. hla­vič­ko­vé sú­bo­ry, kniž­ni­ce).

Prí­po­ny, ako aj opis sú­bo­rov ty­pic­kých pre Vi­sual C++ náj­de­te v ta­buľ­ke 1. Mno­hí z vás ur­či­te po­zna­jú sú­bo­ry na­zý­va­né ma­ke­fi­le. Prav­da je ta­ká, že ak pra­cu­je­te s pros­tre­dím Vi­sual C++ vy­šších ver­zií, s tý­mi­to sú­bor­mi sa nes­tret­ne­te, len ak by ste po­žia­da­li prek­la­dač, aby ich vy­ge­ne­ro­val. Tie­to sú­bo­ry v mi­nu­los­ti slú­ži­li ako zá­klad­né sú­bo­ry ce­lé­ho pro­jek­tu, v nich sa de­fi­no­va­li všet­ky vzťa­hy med­zi zdro­jo­vý­mi sú­bor­mi. Mo­men­tál­ne sa veľ­mi ne­pou­ží­va­jú, a ak pred­sa, slú­žia len pre sku­toč­ných od­bor­ní­kov a my sa ni­mi ne­bu­de­me za­po­die­vať (ak aj, tak len vo „vy­šších“ po­kra­čo­va­niach se­riá­lu). V te­raj­šej do­be nah­ra­dil ich fun­kciu tzv. sú­bor pro­jek­tu (pro­ject fi­le). Je to sú­bor s prí­po­nou DSP a pl­ní rov­na­kú fun­kciu ako sú­bo­ry ma­ke­fi­le (uva­žu­je­me pros­tre­die Vi­sual C++). A ako vlas­tne pre­bie­ha kom­plet­ný pro­ces zos­ta­vo­va­nia ce­lej ap­li­ká­cie? Po­zri­te si ob­rá­zok 1. Mys­lím, že ne­pot­re­bu­je ko­men­tár.

cplus.jpg
Tab. 1 Zoz­nam sú­bo­rov, kto­ré ge­ne­ru­je pros­tre­die Vi­sual C++

TY­PY SÚBO­ROV A SÚČAS­TI VI­SUAL C++
Aby ste lep­šie po­cho­pi­li, aké ty­py sú­bo­rov sa vo Vi­sual C++ ge­ne­ru­jú, uve­die­me si ich struč­ný opis a vy­svet­lí­me si aj to, aké sú­čas­ti Vi­sual C++ ich vy­tvá­ra­jú.

Edi­tor a preh­lia­dač zdro­jov: „Zdro­jom“ sa vo Win­dows ap­li­ká­ciách ozna­ču­je tá časť va­šej ap­li­ká­cie – pro­jek­tu, kto­rú ne­mu­sí­te prog­ra­mo­vať len za­dá­va­ním ne­ko­neč­né­ho množ­stva kó­du, ale zvy­čaj­ne ju navr­hu­je­te vi­zuál­ne, prá­ve v edi­to­ri zdro­jov. Prík­la­dom zdro­ja sú nap­rík­lad iko­ny, bi­tma­py, me­nu, ak­ce­le­rá­to­ry (klá­ve­so­vé skrat­ky), di­aló­gy. Kaž­dý pro­jekt oby­čaj­ne ob­sa­hu­je as­poň je­den texto­vý sú­bor skrip­tov zdro­jov (tu sú za­de­fi­no­va­né zdro­je va­šej ap­li­ká­cie). Ten­to sú­bor má prí­po­nu RC, čo je skrat­ka z re­sour­ce script fi­le. K vy­tvá­ra­niu sú­bo­rov zdro­jov sa dos­ta­ne­me nes­kôr.

Kom­pi­lá­tor zdro­jov: Pre­čí­ta texto­vý sú­bor skrip­tov zdro­jov (RC) a za­pi­su­je bi­nár­ny RES sú­bor pre lin­ker.

Kom­pi­lá­tor C/C++: Kom­pi­lu­je zdro­jo­vý kód (med­zi ja­zyk­mi C a C++ roz­li­šu­je po­mo­cou prí­po­ny sú­bo­ru. Ak *.c, po­uži­je sa kom­pi­lá­tor pre ja­zyk C, ak *.cpp, resp *.cxx, po­uži­je sa kom­pi­lá­tor ja­zy­ka C++) a vy­tvá­ra sú­bo­ry s prí­po­nou OBJ.

Lin­ker: Pre­čí­ta sú­bo­ry s prí­po­nou OBJ a RES, kto­ré vy­tvo­ril kom­pi­lá­tor C/C++ a kom­pi­lá­tor zdro­jov a s po­mo­cou LIB sú­bo­rov kniž­ni­ce MFC, kniž­ni­ce run­ti­me a Win­dows kó­du vy­tvá­ra spus­ti­teľ­ný EXE sú­bor. Sa­moz­rej­mos­ťou je vy­uži­tie tzv. in­kre­men­tál­ne­ho lin­ko­va­nia, čo mi­ni­ma­li­zu­je čas po­treb­ný na opa­ko­va­né lin­ko­va­nie kó­du, v kto­rom sme uro­bi­li ma­lé zme­ny.

App Wizard: Je to ge­ne­rá­tor kó­du, kto­rý vy­tvá­ra fun­kčnú kos­tru ap­li­ká­cie. Tak­to vy­ge­ne­ro­va­ná ap­li­ká­cia má mi­ni­mál­nu fun­kčnosť a slú­ži len ako zá­klad na pri­dá­va­nie ďal­ších pr­vkov. Ako bu­de vy­ze­rať tá­to „mi­ni­mál­na fun­kčnosť“, to si vo­lí­me v di­aló­goch pri ge­ne­ro­va­ní ap­li­ká­cie po­mo­cou App Wizar­du. Je­ho kon­krét­ne po­uži­tie si vy­svet­lí­me na­bu­dú­ce.

cplus.jpg
Obr. 1 Pro­ces zos­ta­vo­va­nia ap­li­ká­cie vo Vi­sual C++

Class Wizard: Ten­to prog­ram nám uľah­ču­je udr­žia­va­nie po­riad­ku v kó­de a trie­dach. Ak po­tre­bu­je­me no­vú trie­du či ob­slú­žiť ne­ja­kú sprá­vu, ro­bí­me tak vždy po­mo­cou Class Wizar­du. Vy­hne­me sa tak mno­hým prob­lé­mom s in­teg­ri­tou ce­lej ap­li­ká­cie. Je­ho kon­krét­ne po­uži­tie si rov­na­ko vy­svet­lí­me na­bu­dú­ce.

Sour­ce Browser: Ten­to nás­troj nám uľah­ču­je vô­bec vy­znať sa v zdro­jo­vom kó­de. Umož­ňu­je nám edi­to­vať ap­li­ká­ciu nie z po­hľa­du sú­bo­rov, ale z po­hľa­du tried a fun­kcií. Pra­cu­je vo via­ce­rých re­ži­moch, opis náj­de­te v hel­pe. Ja vám od­po­rú­čam vy­pnúť ho, jed­nak ako za­čia­toč­ní­ci sa v ňom asi ťaž­ko vy­zná­te, jed­nak znač­ne spo­ma­ľu­je pro­ces zos­ta­vo­va­nia ap­li­ká­cie, keď­že ge­ne­ru­je dosť veľ­ký sú­bor (*.bsc). Vy­pnúť ho mô­že­te tak­to: Z me­nu Pro­ject vy­ber­te Set­tings..., klik­ni­te na zá­lož­ku Browse In­fo a od­škr­tni­te po­lož­ku: Build browse in­fo fi­le. Rov­na­ko na kar­te C/C++ od­škr­tni­te po­lož­ku Ge­ne­ra­te browse in­fo. (pla­tí pre ver­ziu Vi­sual C++ 6.0). Keď bu­de­te pí­sať ta­ké zlo­ži­té ap­li­ká­cie, že vám bu­de ro­biť prob­lém vy­znať sa vo svo­jom zdro­jo­vom kó­de, ale­bo keď pre­be­rie­te ne­ja­ký pro­jekt od svoj­ho ko­le­gu, aby ste sa s ním oboz­ná­mi­li, má po­uži­tie Sour­ce browse­ra svo­je opod­stat­ne­nie, inak nie.

De­bug­ger: Pred­pok­la­dám, že kaž­dé­mu z vás je po­jem de­bug­ger jas­ný. Ten­to prog­ram mô­že čas­to pred­sta­vo­vať po­sled­nú zá­chra­nu z bez­ná­dej­nej si­tuácie. A sa­moz­rej­me, že nes­mie chý­bať v ta­kom pros­tre­dí, ako je Vi­sual C++. Len v struč­nos­ti: de­bug­ger Vi­sual C++ ob­sa­hu­je všet­ky štan­dar­dne po­uží­va­né pr­vky – kro­ko­va­nie prog­ra­mu, nas­ta­ve­nie bo­dov pre­ru­še­nia a po­dob­ne. Od­po­rú­čam vám dob­re sa oboz­ná­miť s pros­tre­dím de­bug­ge­ra, le­bo pri vý­vo­ji ap­li­ká­cií ho bu­de­te čas­to po­tre­bo­vať. Na­píš­te si ne­ja­ký jed­no­duc­hý „prog­ra­mík“ (ne­mu­sí to byť prog­ram pod Win­dows) a po­tom si ho vy­skú­šaj­te od­kro­ko­vať, sle­duj­te hod­no­ty pre­men­ných...

MA­PO­VA­NIE SPRÁV V KNIŽ­NI­CI MFC
Už vie­te, ako sa ap­li­ká­cia zos­ta­vu­je, aké sú hlav­né sú­čas­ti pros­tre­dia Vi­sual C++, te­raz sa vráť­me k prík­la­du First z pred­chád­za­jú­cej čas­ti. Ako vlas­tne pra­cu­je sys­tém spra­cú­va­nia správ v ap­li­ká­cii, kto­rá vy­uží­va kniž­ni­cu MFC? Na za­čiat­ku mu­sí­me eš­te dopl­niť va­še ve­do­mos­ti o sprá­vach. Už sme sa o nich zmie­ni­li, ale eš­te sme si ich ne­roz­de­ľo­va­li. Roz­li­šu­je­me tri zá­klad­né dru­hy správ v sys­té­me Win­dows. Pr­vým ty­pom, s kto­rým sme sa už stret­li, sú tzv. štan­dar­dné sprá­vy. Za­čí­na­jú sa pre­fixom WM. Prík­la­dom sú napr. sprá­vy WM_PAINT, WM_LBUT­TON­DOWN, WM_TI­MER a po­dob­ne. Týc­hto správ je dr­vi­vá väč­ši­na. Dru­hým ty­pom sú prí­ka­zo­vé sprá­vy. Tie rea­gu­jú na po­uží­va­te­ľov prí­kaz, kto­rý vy­dal buď klik­nu­tím na po­lož­ku v me­nu, na pa­nel nás­tro­jov ale­bo na ne­ja­ký iný ov­lá­da­cí pr­vok, ale­bo keď po­uží­va­teľ stla­čil skrat­ko­vý klá­ves. Tie­to sprá­vy sa za­čí­na­jú rov­na­ko pre­fixom WM, ale za ním mu­sí nas­le­do­vať eš­te COM­MAND, tak­že prí­ka­zo­vá sprá­va vy­ze­rá: WM_COM­MAND. Tre­tím ty­pom správ sú no­ti­fi­kač­né ale­bo aj in­for­mač­né sprá­vy. Tie­to sprá­vy vy­uží­va­jú pre se­ba hlav­ne ov­lá­da­cie pr­vky a dcér­ske ok­ná (čo to je, si po­vie­me nes­kôr), aby da­li svoj­mu ro­di­čov­ské­mu ok­nu ve­dieť, že sa zme­nil ich stav. Nap­rík­lad keď zme­ní­te text v texto­vom po­li, ono po­šle sprá­vu EN_CHAN­GE, aby ozná­mi­lo, že sa nie­čo udia­lo, a je na prog­ra­me, ako tú­to sprá­vu ob­slú­ži. Dosť však bo­lo teórie, po­ďme si to aj prak­tic­ky vy­skú­šať. Po­zri­te sa te­raz na vý­pis prík­la­du First, naj­prv na vý­pis sú­bo­ru first.h. Náj­di­te si dek­la­rá­ciu chrá­ne­ných (pro­tec­ted) fun­kcií v trie­de CFir­stApp. Náj­de­te tam dek­la­rá­ciu jed­nej fun­kcie On­Paint. Zna­ky afx_msg ozna­ču­jú, že tá­to fun­kcia slú­ži na spra­co­va­nie správ sys­té­mu Win­dows fun­kcia­mi kniž­ni­ce MFC (v sku­toč­nos­ti je afx_msg len ozna­če­nie pre nás, že da­ná fun­kcia je čle­nom ma­py správ, prek­la­dač to­to ozna­če­nie ig­no­ru­je). Me­no tej­to fun­kcie si ne­mô­že­me vo­liť, ako sa nám za­chce. Pre kaž­dú sprá­vu, kto­rú vie kniž­ni­ca MFC ob­slú­žiť, má už MFC vy­hra­de­né ne­ja­ké me­no. Tak­že ak my chce­me ob­slú­žiť stla­če­nie ľa­vé­ho tla­čid­la my­ši, mu­sí­me po­užiť člen­skú fun­kciu kniž­ni­ce MFC OnL­But­ton­Down a ni­ja­kú inú. Opis správ a pri­ra­de­ných fun­kcií náj­de­te v ta­buľ­ke 2. Pod dek­la­rá­ciou tej­to fun­kcie sa nac­hád­za mak­ro DEC­LA­RE_MES­SA­GE_MAP, kto­ré je vždy dek­la­ro­va­né v de­fi­ní­cii tej trie­dy, kto­rá má na sta­ros­ti spra­co­va­nie kon­krét­nej sprá­vy. Tak­to sa dek­la­ru­je ma­pa správ. Im­ple­men­tá­ciu ma­py správ si po­zri­te v zdro­jo­vom sú­bo­re prík­la­du First.cpp. Za­čí­na sa mak­rom BE­GIN_MES­SA­GE_MAP a kon­čí mak­rom END_MES­SA­GE_MAP. V mak­re BI­GIN_MES­SA­GE_MAP mô­že­te náj­sť ná­zov trie­dy, pre kto­rú je ur­če­ná tá­to ma­pa správ (CMyF­ra­me), ako aj me­no trie­dy, od kto­rej je tá­to trie­da od­vo­de­ná (CFra­meWnd). Med­zi tý­mi­to dvo­ma mak­ra­mi sa nac­hád­za zoz­nam správ, kto­ré sú ob­slu­ho­va­né fun­kcia­mi MFC. V na­šom prí­pa­de je to sprá­va ON_WM_PAINT, kto­rá je ob­slu­ho­va­ná fun­kciou On­Paint. Ak te­da ap­li­ká­cia vy­šle sprá­vu WM_PAINT, ap­li­kač­ný sys­tém ju za­chy­tí a za­vo­lá prís­luš­nú fun­kciu, aby sprá­vu ob­slú­ži­la. Pri vý­vo­ji ap­li­ká­cie sa oby­čaj­ne ne­mu­sí­te sta­rať o pí­sa­nie správ a pí­sa­nie prís­luš­ných dek­la­rá­cií ich ob­služ­ných fun­kcií. Tú­to prá­cu za nás ro­bí Class Wizard. Je­ho po­uži­tie na kon­krét­nom prík­la­de si uká­že­me na­bu­dú­ce. Aby ste však as­poň troc­hu po­cho­pi­li, ako da­ný sys­tém pra­cu­je, mier­ne si zdo­ko­na­lí­me prík­lad First. Chce­me, aby sa po stla­če­ní ľa­vé­ho tla­čid­la my­ši vy­pí­sal text „Tu som“ pres­ne na tom mies­te, kde sme klik­li my­šou do ok­na ap­li­ká­cie. Ako to uro­biť? V pr­vom ra­de mu­sí­me pri­dať fun­kciu, kto­rá by ob­slu­ho­va­la sprá­vu stla­če­nia ľa­vé­ho tla­čid­la my­ši. Ne­bu­de­me eš­te na to po­uží­vať Class Wizard, uro­bí­me to kla­sic­ky ruč­ne. Ako vi­dí­te v ta­buľ­ke 2, sprá­va na stla­če­nie ľa­vé­ho tla­čid­la my­ši sa vo­lá WM_LBUT­TON­DOWN a jej ob­služ­ná fun­kcia OnL­But­ton­Down. Pre­to do­píš­te dek­la­rá­ciu ob­služ­nej fun­kcie OnL­But­ton­Down do sú­bo­ru First.h pod fun­kciu On­Paint, tak­že chrá­ne­ná časť trie­dy CFir­stApp bu­de vy­ze­rať tak­to:

pro­tec­ted:

	// afx_msg ozna­ču­je ,že fun­kcia On­Paint je sú­čas­ťou spra­cú­va­nia správ MFC
afx_msg void On­Paint();	
afx_msg void OnL­But­ton­Down(UINT nFlags, CPoint po­int);
	DEC­LA­RE_MES­SA­GE_MAP()

Pr­vý pa­ra­me­ter fun­kcie OnL­But­ton­Down nás te­raz ne­mu­sí za­ují­mať. O dru­hom nám sta­čí ve­dieť to, že v ňom sú ulo­že­né sú­rad­ni­ce kur­zo­ra pri stla­če­ní ľa­vé­ho tla­čid­la my­ši. X-ová sú­rad­ni­ca je prís­tup­ná ako po­int.x a Y-ová ako po­int.y (pre­čo to tak je, to si vy­svet­lí­me v ďal­ších čas­tiach, maj­te str­pe­nie). Tak­že fun­kcia OnL­But­ton­Down nám po­sky­tu­je pres­ne to, čo po­tre­bu­je­me. Aby náš prog­ram fun­go­val, nes­ta­čí pri­pí­sať fun­kciu na stla­če­nie ľa­vé­ho tla­čid­la len do dek­la­rá­cie ma­py správ. Mu­sí­me po­zme­niť aj jej im­ple­men­tá­ciu (sú­bor: First.cpp), a to tak­to:

BE­GIN_MES­SA­GE_MAP(CMyF­ra­me, CFra­meWnd)	// ma­pa správ
	ON_WM_LBUT­TON­DOWN()
	ON_WM_PAINT()
END_MES­SA­GE_MAP()

Te­raz má­me fun­kciu už kom­plet­ne pri­da­nú do sys­té­mu ma­py správ. Ale po spus­te­ní prog­ra­mu zis­tí­te, že stla­če­nie ľa­vé­ho tla­čid­la my­ši nič neu­ro­bí. Na čo sme asi za­bud­li? Sa­moz­rej­me, za­bud­li sme na­pí­sať sa­mot­né te­lo fun­kcie OnL­But­ton­Down. Pri­píš­te pre­to nas­le­du­jú­ci kód do sú­bo­ru First.cpp nad fun­kciu On­Paint (ale­bo aj pod ňu, je to jed­no):

void CMyF­ra­me::OnL­But­ton­Down(UINT nFlags, CPoint po­int)
{
	CClientDC dc(this);
	dc.TextOut(po­int.x, po­int.y, "Tu som");
}

cplus.jpg
Tab. 2 Zoz­nam naj­čas­tej­šie po­uží­va­ných fun­kcií na ob­slu­hu kon­krét­nych správ sys­té­mu Win­dows

Ak te­raz spus­tí­te prog­ram First, po stla­če­ní ľa­vé­ho tla­čid­la my­ši sa na ob­ra­zov­ke pres­ne na po­zí­cií kur­zo­ra ob­ja­ví text: „Tu som“. A je to ho­to­vé. Ani to ne­bo­lo ta­ké ťaž­ké, no nie? Ak vás za­ují­ma, čo to zna­me­ná CClientDC dc(this), prez­ra­dím vám len to, že tým­to vy­tvá­ra­me kon­text za­ria­de­ní, kto­rý má ta­ké roz­me­ry ako po­uží­va­teľ­ská ob­lasť ok­na prog­ra­mu First. Na zo­pa­ko­va­nie: po­uží­va­teľ­ská ob­lasť ok­na ne­zahŕňa ti­tul­ko­vý pruh, me­nu a ok­raj ok­na. Po­drob­nej­šie si tú­to té­mu ro­zo­be­rie­me v čas­ti ve­no­va­nej trie­dam kon­textu za­ria­de­ní.

TI­PY NA WWW
Ako som pí­sal v úvo­de, od tej­to čas­ti vás bu­dem pra­vi­del­ne in­for­mo­vať o za­ují­ma­vých ad­re­sách, kto­ré sa tý­ka­jú prob­le­ma­ti­ky prog­ra­mo­va­nia v ja­zy­koch C/C++ a Vi­sual C++. Ak aj vy po­zná­te ne­ja­ké dob­ré ad­re­sy, pro­sím, na­píš­te mi ich, čím ich bu­de viac, tým lep­šie. Tu je pr­vých päť:

http://www.prog­ram­min­gtu­to­rials.com/main.asp – nie­čo pre za­čia­toč­ní­kov, rôz­ne tu­to­ria­ly
http://www.vi­sualc.com/ – strán­ka ve­no­va­ná Vi­sual C++
http://www.pla­net-sour­ce-co­de.com/– tu náj­de­te sku­toč­ne nep­re­ber­né množ­stvo zdro­jo­vých kó­dov
http://www.prog­ram­mer­shea­ven.com/– vy­ni­ka­jú­ca strán­ka, náj­de­te tu ve­ľa od­ka­zov na iné strán­ky
http://www.cuj.com/ – strán­ka C/C++ Jour­na­lu, ča­so­pis ve­no­va­ný ja­zy­kom C/C++
Toľ­ko na za­čia­tok, na­bu­dú­ce ďal­šie.

TI­PY NA DO­MA
Skús­te pri­dať do prog­ra­mu First ďal­šie fun­kcie ob­slu­hu­jú­ce sprá­vy. Nap­rík­lad vy­mys­li­te ne­ja­kú čin­nosť pre pra­vé tla­čid­lo my­ši, pre „dvoj­klik“ ľa­vé­ho tla­čid­la a po­dob­ne. In­špi­rá­ciu na fun­kcie, kto­ré mô­že­te po­užiť, náj­de­te v ta­buľ­ke 2.

NA­BUDÚCE
Na­bu­dú­ce si opí­še­me prá­cu s pros­tre­dím Vi­sual C++ (vy­tvo­rí­me ap­li­ká­ciu s App Wizar­dom, po­uži­je­me Class Wizard, edi­tor zdro­jov). Tak­že stret­ne­me sa až v bu­dú­com ro­ku. Že­lám vám krás­ne pre­ži­tie via­noč­ných sviat­kov a ve­ľa ús­pec­hov v no­vom ro­ku. Maj­te sa pek­ne.

Ďal­šie čas­ti >>

Zdroj: PC Revue 12/2000



Ohodnoťte článok:
   
 

24 hodín

týždeň

mesiac

Najnovšie články

C++ pod Win­dows: 1. časť: Úvod
Vítam vás pri novom seriáli o programovaní. Ako z názvu môžete usúdiť, pôjde o programovanie pod operačným systémom Microsoft Windows využitím jazyka C++. čítať »
 
C++ pod Win­dows: 26. časť: Zá­ver
V tejto časti sa pri seriáli C++ pod Windows stretávame naposledy. Predchádzajúcich 25 častí bolo venovaných čisto programovaniu a riešeniu rôznych programátorských úloh. čítať »
 
C++ pod Win­dows: 25. časť: Ac­ti­veX & DLL
Vítam vás pri predposlednej časti seriálu C++ pod Windows. Či už ju čítate na Slovensku v prehriatej kancelárii, alebo niekde v Karibiku s nohami namočenými v mori čítať »
 
C++ pod Win­dows: 24. časť: How to... II
Čo sme načali v predchádzajúcej časti, tým budeme teraz pokračovať. Pozrieme sa na tlač a komponenty ActiveX. Opäť uplatníme čisto praktický (how-to) prístup čítať »
 
C++ pod Win­dows: 23. časť: How to... I
Vítam vás pri ďalšom pokračovaní seriálu. V predchádzajúcej časti sme dobrali všetko, čo som na začiatku označil ako rozumný základ, po ktorého zvládnutí budete pripravení na získavanie ďalších vedomostí čítať »
 
C++ pod Win­dows: 22. časť: Se­ria­li­zá­cia ap­li­ká­cií MDI
Nastal máj, lásky čas. Dúfam, že keď čítate tieto riadky, počasie sa už umúdrilo a je pekne teplo a slnečno, tak ako sa na máj patrí. čítať »
 
C++ pod Win­dows: 21. časť: Se­ria­li­zá­cia SDI ap­li­ká­cií II.
Vítam vás pri ďalšom pokračovaní nášho rozprávania o programovaní pod Windows. V tejto časti uvedením ukážkového príkladu dokončíme opis serializácie aplikácií SDI. čítať »
 
C++ pod Win­dows: 20. časť: Se­ria­li­zá­cia SDI ap­li­ká­cií I
V tejto časti budeme pokračovať v začatom rozprávaní o serializácii a preberieme si serializáciu aplikácií typu SDI (Single Document Interface). čítať »
 
 
 
  Zdieľaj cez Facebook Zdieľaj cez Google+ Zdieľaj cez Twitter Zdieľaj cez LinkedIn Správy z RSS Správy na smartfóne Správy cez newsletter