Ceballos: Visual C++. Programación avanzada en win32.

download Ceballos:  Visual C++. Programación avanzada en win32.

of 133

Transcript of Ceballos: Visual C++. Programación avanzada en win32.

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    1/133

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    2/133

    Qjsunm C++Vrelrnincj` Nvn`zndn k` \j`38

    Ace. Onvjkr Ckhnmmes SjkrrnVreakser tjtumnr dk mn

    Kscukmn Vemjtc`jcn Supkrjer[`jvkrsjdnd dk Nmcnm

    bttp?//www.aockhnmmes.ks

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    3/133

    Qjsunm C++. Vrelrnincj` Nvn`zndn k` \j`38 Ace. Onvjkr Ckhnmmes Sjkrrn

    Dk mn kdjcj`? XN-IN >:::

    INXCNS CEIKXCJNMKS? Mns dksjl`ncje`ks utjmjzndns per mns kiprksns pnrn djstj`lujr

    sus preductes sukmk` skr inrcns rkljstrndns. XN-IN bn j`tk`tnde n me mnrle dk kstk mjhre djstj`lujr

    mns inrcns ceikrcjnmks dk mes trij`es dkscrjptjves, sjlujk`de km kstjme dk inyscumns quk utjmjzn

    km anhrjcn`tk, sj` j`tk`cj` dk j`arj`ljr mn inrcn y sme k` hk`kajcje dkm prepjktnrje dk mn ijsin.

    XN-IN ks u`n inrcn ceikrcjnm rkljstrndn.

    Sk bn pukste km ixjie kipke k` earkckr nm mkcter u`n j`aerincj` ceipmktn y prkcjsn.

    Sj` kihnrle, XN-IN Kdjterjnm `e nsuik `j`lu`n rkspe`snhjmjdnd dkrjvndn dk su use,

    `j tnipece per cunmqujkr vjemncj` dk pntk`tks `j etres dkrkcbes dk tkrckrns pnrtks quk pudjkrn`ecurrjr. Kstn puhmjcncj` tjk`k per ehokte prepercje`nr u`es ce`ecjijk`tes prkcjses y ncrkdjtndes

    sehrk km tkin trntnde. Su vk`tn `e supe`k pnrn km kdjter `j`lu`n aerin dk nsjstk`cjn mklnm,

    ndij`jstrntjvn `j dk `j`l` etre tjpe. Cnse dk prkcjsnrsk nsksern mklnm u etrn aerin dk nyudn

    kxpkrtn, dkhk` huscnrsk mes skrvjcjes dk u` preaksje`nm ceipktk`tk.

    Xkskrvndes tedes mes dkrkcbes dk puhmjcncj` k` cunmqujkr jdjein.

    @j`lu`n pnrtk dk kstk mjhre pukdk skr rkpreducjdn, lrnhndn k` sjstkin

    dk nminck`nijk`te e trn`sijtjdn k` aerin nmlu`n `j per cunmqujkr preckdjijk`te, yn

    skn kmkctr`jce, ikc`jce, rkprelrajce, inl`tjce e cunmqujkr etre, sj` nuterjzncj`

    prkvjn y per kscrjte dk XN-IN7 skl` me djspukste k` km nrtcume ;34-hjs dkm Cdjle Vk`nm

    vjlk`tk skr` cnstjlndes ce` mn pk`n dk nrrkste inyer y iumtn qujk`ks j`tk`cje`ndnik`tk,

    rkpreduokrk` e pmnljnrk`, k` tede e k` pnrtk, u`n ehrn mjtkrnrjn, nrtstjcn e cjk`tajcn.

    Kdjtnde per?

    XN-IN Kdjterjnm

    Ctrn. Cn`jmmns, >44

    82643 INDXJD

    Tkmae`e? :> 32> 63 66

    Tkmkanx? :> 32> 63

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    4/133

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    5/133

    @DJCKVXMELE .............................................................................................................. RRJ

    CNVT[ME >. NNDJX CNXNCTKXSTJCNS N [@N NVMJCNCJ@ ........ >

    QK@TN@N DK VXKSK@TNCJ@ .................................................................... >CNXLNX [@N NVMJCNCJ@ [@N SEMN QK_ ............................................ ;

    J@AEXINCJ@ DKM SJSTKIN ...................................................................... :LktSystkiJ`ae ............................................................................................... :LktQkrsje`Kx ................................................................................................. >8LmehnmIkieryStntus ..................................................................................... >3LktDjsgArkkSpnck .......................................................................................... >;LktSystkiDjrkctery ....................................................................................... >;Nckrcn dk ........................................................................................................ >1

    AEXI[MNXJES AMETN@TKS ........................................................................ 86SNMJX DK \J@DE\S DK [@N AEXIN CE@TXEMNDN ........................... 83KOKC[TNX [@N NVMJCNCJ@ \J@DE\S E DK CE@SEMN ................... 84

    NHXJX E JIVXJIJX [@ DKTKXIJ@NDE AJCBKXE .................................. 36NNDJX [@ JCE@E N MN HNXXN DK TNXKNS ......................................... 3>IK@S CE@TKRT[NMKS .............................................................................. 31NNDJX [@ SJSTKIN DK NZ[DN N [@N NVMJCNCJ@ ........................ 32

    Sepertk dk nyudn prepercje`nde per Npp\jznrd .......................................... 3:Ceipjmnr mes ajcbkres dk nyudn ...................................................................... 46Djskn`de km sjstkin dk nyudn ...................................................................... 4>Ce`strujr km ajcbkre dk nyudn ......................................................................... 41Nyudn sk`sjhmk nm ce`tkxte ............................................................................ 42

    Au`cj` \j`Bkmp ........................................................................................... 4:Vrepjkdnd Ce`tkxt bkmp dk mns vk`tn`ns ......................................................... 4:BTIM Bkmp \ergsbep .................................................................................. 4:

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    6/133

    QJJJ QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    Ce`vkrtjr u` ajcbkre dk nyudn \j`Bkmp ........................................................ ;6Qj`cumnr km sjstkin dk nyudn BTIM n u`n npmjcncj` .................................. ;>Nyudn BTIM sk`sjhmk nm ce`tkxte ................................................................ ;8

    DJSTXJH[CJ@ DK [@N NVMJCNCJ@ ........................................................ ;4Cemecnr km jce`e dk mn npmjcncj` k` km ik` J`jcje ...................................... ;2Nsjl`ncj` dk lrupes n ceipe`k`tks ............................................................ ;:Nsjl`nr ceipe`k`tks n cndn tjpe dk j`stnmncj` ............................................ 16Qk`tn`n dk prksk`tncj` y ajcbkre mknik.txt ................................................. 16Nsjl`nr ajcbkres n mes lrupes dk ajcbkres ...................................................... 1>Xkcurses ......................................................................................................... 18Ce`strujr mns jilk`ks dk mes djsces dk djstrjhucj` ..................................... 18

    CNVT[ME 8. BJMES ........................................................................................... 1;

    CE@CKVTE DK VXECKSE .............................................................................. 1;BJMES ................................................................................................................. 11

    Kstndes dk u` bjme .......................................................................................... 1>3

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    7/133

    @DJCK JR

    CNVT[ME 3. CEI[@JCNCJE@KS .................................................................. >>;

    CEI[@JCNCJE@KS VEX KM V[KXTE SKXJK.............................................. >>86Xkljstre dk \j`dews ..................................................................................... >83J`tkranz dk ceiu`jcncje`ks ............................................................................ >84

    Au`cj` J`jcjnr .......................................................................................... >81Au`cj` Tkrij`nr ...................................................................................... >81Au`cj` KstnhmkckrCe`kxje` .................................................................... >836Au`cj` Ce`ajlurnrDjsCei ...................................................................... >3>Ce`tremnr kvk`tes ...................................................................................... >34

    Au`cj` MkkrCnrnctkrksVukrte .................................................................. >32Au`cj` KscrjhjrCnrsVukrte ...................................................................... >4>Au`cj` CertnrCe`kxje` ........................................................................... >48

    J@TKXAN_ DKM [S[NXJE .............................................................................. >43K@QJNX Z XKCJHJX DNTES ........................................................................... >442

    Tjpe QNXJN@T ............................................................................................. >;3In`jpumnr mns ceiu`jcncje`ks ....................................................................... >;1J`tkranz dk ceiu`jcncje`ks ............................................................................ >;:

    Au`cj` J`jcjnr .......................................................................................... >1>Au`cj` Tkrij`nr ...................................................................................... >1>Au`cj` KstnhmkckrCe`kxje` .................................................................... >18Au`cj` Ce`ajlurnrDjsCei ...................................................................... >13Ce`tremnr kvk`tes ...................................................................................... >14Au`cj` MkkrCnrnctkrksVukrte .................................................................. >11Au`cj` KscrjhjrCnrsVukrte ...................................................................... >11Au`cj` CertnrCe`kxje` ........................................................................... >112K@QJNX Z XKCJHJX DNTES ........................................................................... >28Nndjr cemui`ns n u` ce`trem mjst .................................................................. >24Nndjr mes suhkmkik`tes ................................................................................ >2;Qjstns dkm ce`trem mjst ...................................................................................... >2;

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    8/133

    R QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    Jce`es lrn`dks .......................................................................................... >22222

    Kmkik`te skmkccje`nde ................................................................................... >22CE@TXEM TXKK ............................................................................................... >2:

    CTrkkCtrm y CTrkkQjkw ................................................................................. >:6Kmkik`tes dk u` ce`trem trkk .......................................................................... >:8Kmkik`tes pndrk k bjoe ................................................................................... >:3Nndjr kmkik`tes n u` ce`trem trkk ................................................................ >:3Skmkccje`nr u` kmkik`te ................................................................................ >::2

    CNVT[ME ;. CEIVE@K@TKS SEAT\NXK ................................................. 863

    CEIVE@K@TKS AXK@TK N HJHMJETKCNS ................................................ 864IEDKMES DK CEIVE@K@TKS ..................................................................... 864EMK ..................................................................................................................... 86;CEI .................................................................................................................... 861

    Au`dnik`tes dk mes ehoktes CEI ................................................................. 861DCEI ................................................................................................................. 86:EMK 8 .................................................................................................................. 8>8NctjvkR ............................................................................................................... 8>3CE@TK@KDEX NctjvkR ................................................................................... 8>4

    J`crustnr u` ehokte ......................................................................................... 8>;Qj`cumnr u` ehokte .......................................................................................... 8>1Ksqukmkte dk mn npmjcncj` .............................................................................. 8>:Kmjij`nr u` ehokte NctjvkR ........................................................................... 88

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    11/133

    @DJCK RJJJ

    CNVT[ME 2. HJHMJETKCNS DJ@IJCNS .................................................... 4;:

    CXKNCJ@ DK [@N DMM K@ \j`38.............................................................. 416Ajcbkre dk cnhkckrn (.b) ................................................................................. 418Ajcbkre auk`tk (.c e .cpp) ............................................................................... 418Ajcbkre dk dkaj`jcj` dk idumes (.dka) ........................................................ 41;

    MMNIN@DE N MNS A[@CJE@KS DK MN DMM ............................................. 41;K`mnck ksttjce ................................................................................................ 41Nndjr etrn j`tkranz ................................................................................... 4:4Npmjcncj` dk tjpe ce`semn ........................................................................ 4::

    CNVT[ME :. HNSKS DK DNTES ...................................................................... ;63

    CMNSKS EDHC VNXN NCCKSE N HNSKS DK DNTES ................................ ;64NCCKSE N [@N HNSK DK DNTES [TJMJ_N@DE EDHC .......................... ;>6

    J`tklrjdnd rkakrk`cjnm ..................................................................................... ;>>Cnrnctkrstjcns dk mn npmjcncj` ...................................................................... ;>>Xkljstrnr mn hnsk dk dntes ............................................................................... ;>8Crknr u`n npmjcncj` ce` sepertk EDHC pnrn HD ......................................... ;>3

    Djske dk mn pmn`tjmmn dk djmele .................................................................... ;>2Kokcutnr mn npmjcncj` ..................................................................................... ;>:Nndjr etre ce`ou`te dk rkljstres ................................................................... ;86Mmk`nr mn mjstn dkspmklnhmk ce` mn mjstn dk jdjeins ......................................... ;8>Kstnhmkckr u` ajmtre ......................................................................................... ;84Kstnhmkckr u` pnriktre ................................................................................. ;8;Kdjtnr, nndjr y herrnr rkljstres ..................................................................... ;82

    Kdjtnr u` rkljstre....................................................................................... ;8:Nndjr u` rkljstre ..................................................................................... ;36Herrnr u` rkljstre ...................................................................................... ;33Nhn`de`nr u`n epkrncj` dk kdjcj` e dk ndjcj` ................................... ;33

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    12/133

    RJQ QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    Xkljstres herrndes .......................................................................................... ;34Ce`ou`te dk rkljstres vnce ............................................................................ ;3;

    EHOKTES NCTJQKR VNXN NCCKSE N DNTES ........................................... ;31Iedkme dk ehokte NDE .................................................................................. ;3Crknr u`n npmjcncj` ce` sepertk NDE pnrn HD ........................................... ;48

    Nsjstk`tk NDE Dntn Heu`d Djnmel .......................................................... ;48Kxtk`sje`ks Qjsunm C++ pnrn NDE .......................................................... ;43Djske dk mn pmn`tjmmn dk djmele ............................................................... ;4Nctunmjznr mes dntes ........................................................................................ ;13Nctunmjzncj` j`ikdjntn ................................................................................. ;14Nctunmjzncj` per metks ................................................................................... ;1;Cn`ckmnr iedjajcncje`ks ................................................................................ ;11Nndjr u` `ukve rkljstre ................................................................................ ;1>

    Ce`trem Inrqukk ....................................................................................... 1>8Ce`trem BetSpet ........................................................................................ 1>8Ce`trem NctjvkIevjk ................................................................................ 1>8

    Decuik`tes NctjvkR ..................................................................................... 1>3Ehoktes dk J`tkr`kt Kxpmerkr .......................................................................... 1>3

    Ehokte wj`dew .......................................................................................... 1>4Ehokte arniks ............................................................................................ 1>1Ehokte bjstery ........................................................................................... 1>2Ehokte scrjpt .............................................................................................. 1>2Ehokte decuik`t ....................................................................................... 1>2Ehokte mj`g ................................................................................................ 186Ehokte n`cber ............................................................................................ 186Ehokte aeri ............................................................................................... 186Ehokte kmkik`t .......................................................................................... 186

    Ijcreseat Are`tVnlk Kxprkss ......................................................................... 18>

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    14/133

    RQJ QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    CNVT[ME >>. QJS[NM J@TKXDKQ ................................................................. 183

    K@TEX@E DK VXELXNINCJ@ DK QJS[NM J@TKXDKQ ....................... 183Ksqukin btim ................................................................................................. 184Cundre dk bkrrnijk`tns .................................................................................. 184Ksqukin dk skcuk`cjns dk cein`des ............................................................ 18;Qjstn Djske ................................................................................................... 18;Qjstn Cdjle .................................................................................................. 18;Qjstn rpjdn .................................................................................................... 181

    DJSKE DK [@ SJTJE \KH ............................................................................ 181Trnhnonr sj` ce`kxj` ..................................................................................... 182Crknr u` preykcte \kh .................................................................................. 182

    Crknr y erln`jznr plj`ns .............................................................................. 136J`cmujr lrajces ............................................................................................... 138Kstnhmkckr v`cumes ........................................................................................ 138Tkin y djske ................................................................................................ 133Hnrrn dk kxpmerncj` ...................................................................................... 134Are`tVnlk y Qjsunm J`tkrDkv .......................................................................... 13;Djstrjhucj` dk mn npmjcncj` \kh ................................................................. 13;

    J@TKLXNX I[MTJIKDJN .............................................................................. 13;VLJ@NS NSV ................................................................................................... 13:

    Iedkme NSV ................................................................................................... 146Skcuk`cjns dk rdk`ks .................................................................................... 146Mk`lunoks dk skcuk`cjns dk rdk`ks .............................................................. 148Ehoktes NSV prkdkaj`jdes .............................................................................. 143

    Ehokte Xkspe`sk ....................................................................................... 143Ehokte Xkqukst .......................................................................................... 143Ehokte Skrvkr ............................................................................................ 143Ehokte Skssje` .......................................................................................... 144Ehokte Nppmjcntje` .................................................................................... 144Ehokte EhokctCe`tkxt ............................................................................... 144

    EHTK@KX J@AEXINCJ@ IKDJN@TK AEXI[MNXJES .......................... 144Djske dk u` aeriumnrje BTIM .................................................................... 141Vrecksnr mn j`aerincj` dkm aeriumnrje k` km cmjk`tk ..................................... 148. NVMJCNCJE@KS DK J@TKX@KT ........................................... 1;;

    CXKNX [@ KRVMEXNDEX \KH ................................................................... 1;;

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    15/133

    @DJCK RQJJ

    \J@J@KT ............................................................................................................ 1;2Ncckse n u` skrvjder BTTV ........................................................................... 1;:Ncckse n u` skrvjder ATV .............................................................................. 118

    SECGKTS ........................................................................................................... 1

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    16/133

    RQJJJ QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    Mn rksemucj` dk vdke cnihj ......................................................................

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    17/133

    @DJCK RJR

    Npmjcncj` DjrkctSeu`d ................................................................................. 2>:

    Crknr km ehokte DjrkctSeu`d ...................................................................... 2>:@jvkm dk ceepkrncj` dk mn npmjcncj` ...................................................... 286Crknr u` huaakr dk se jde ......................................................................... 286Kakcte Deppmkr .......................................................................................... 28>Xkpreducjr u` huaakr dk se`jde ................................................................ 288Dktk`kr u` se`jde ..................................................................................... 288Qemuik` .................................................................................................... 288Hnmn`ck ...................................................................................................... 283Ce`es dk se`jde ........................................................................................ 283

    Crknr mes ehoktes dk se`jde pnrn npmjcncj` ................................................... 281

    J`tkranz dk prelrnincj` ............................................................................... 28

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    18/133

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    19/133

    VXMELEVnrn ancjmjtnr km dksnrremme dk npmjcncje`ks pnrn \j`dews kscrjtns k` C, Ijcreseatj`treduck k` >::8, C/C++ .6. Mns j`vkstjln-cje`ks dkiestrnre` quk dkhjde nm `jvkm dk djajcumtnd dk nprk`dkr y utjmjznr `e smeC++, sj`e km ce`ou`te dk cmnsks dk mns IAC, iucbes dksnrremmnderks sk qukdnhn`k` km j`tk`te dk ijlrnr n C++. Ver kstk ietjve auk crknde k` akhrkre dk >::3 Qj-sunm C++ >.6, pnrn ancjmjtnr n mes dksnrremmnderks mn ijlrncj` n C++.

    Ce` Qjsunm C++ sk j`treduoe u`n tkc`emeln dk dksnrremme j``evndern n hnskdk nsjstk`tks ce` u`n `ukvn vkrsj` dk mns IAC is petk`tk7 mn 8.6. Mn hjhmjetkcnIAC 8.6, ceipntjhmk ce` mn vkrsj` n`tkrjer, pkrijtj jipmkik`tnr u`n nrqujtkc-turn dk npmjcncj` quk ancjmjtnhn k`erikik`tk km dksnrremme dk npmjcncje`ks. Mesnsjstk`tks quk pkrijtn` lk`krnr kstn `ukvn nrqujtkcturn hnsndn k` mns cmnsksIAC, kvjtnhn` kscrjhjr iucbns dk mns m`kns dk cdjle `kcksnrjns pnrn ce`strujru`n npmjcncj`. Kste ks, mes nsjstk`tks lk`krnhn` npmjcncje`ks pnrn \j`dews, sj``kcksjdnd dk kscrjhjr m`kns y m`kns dk cdjle. Ver kmme, Qjsunm C++ sk ce`vjrtjk` km cnij`e is certe pnrn km dksnrremme dk npmjcncje`ks C++ pnrn \j`dews,

    ceihj`n`de, ndkis, u` nmte rk`djijk`te ce` u`n ceiedjdnd k` km use.

    Vestkrjerik`tk, k` nhrjm dk >::3, Ijcreseat prksk`t EMK 8.6. Ce` EMK 8.6mes dksnrremmnderks pedn` jipmkik`tnr ehoktes quk j`tkrnctunhn` k`trk s sj` ji-

    pertnr cie nctunhn cndn ehokte kspkcajcnik`tk. Is n`, pedn` utjmjznrsk npmj-cncje`ks k`tkrns ceie ceipe`k`tks, me quk bncn is acjm mn j`tklrncj` dknpmjcncje`ks y ceie ce`skcuk`cjn mn ceihj`ncj` dk j`aerincj`. @e ehstn`tk,bnstn quk Qjsunm C++ >.; y mn hjhmjetkcn IAC 8.; `e kstuvjkre` djspe`jhmks, `eauk ciede dksnrremmnr npmjcncje`ks EMK 8.6. N pnrtjr dk kstk ieik`te, mes dks-

    nrremmnderks tuvjkre` nsjstk`tks pnrn crknr ehoktes EMK cmjk`tk, skrvjder e ce`tk-`kder ce` peces ksaukrzes. Nsjijsie, kstn hjhmjetkcn tnihj` j`cmun sepertk

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    20/133

    RRJJ QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    ceipmkte dk EDHC pnrn ancjmjtnr mn prelrnincj` y km ncckse n hnsks dk dntes me-cnmks e rkietns.

    Km aukrtk j`tkrs dk mes dksnrremmnderks per crknr npmjcncje`ks dk 38 hjts (hnsn-dns k` \j`38 y EMK) ns ceie tk`kr amkxjhjmjdnd pnrn djrjljrsk n imtjpmks pmntn-aerins (\j`dews y \j`dews @T pnrn J`tkm y XJSC, \j`dews :x y Incj`tesb)ce`duoe n Ijcreseat n crknr Qjsunm C++ 8.6 y mn hjhmjetkcn IAC 3.6 tetnmik`tkceipntjhmk ce` mns vkrsje`ks n`tkrjerks. Dk kstn aerin mes dksnrremmnderks pedn`ce`tj`unr in`tk`jk`de sus npmjcncje`ks dk >1 hjts ce` Qjsunm C++ >.;x y mes dks-nrremmnderks dk 38 hjts mns suyns ce` Qjsunm C++ 8.x.

    Km ceipjmnder C++ dk Qjsunm C++ 8.6 yn j`cerpernhn mns mtjins cnrnctkrstj-

    cns dk C++7 kste ks, pmn`tjmmns dk C++ y mes in`jpumnderks dk kxckpcje`ks quk susn`tkckserks j`cerpernhn` n hnsk dk incres. Qjsunm C++ 8.6 npertnhn k`trk etrnscnrnctkrstjcns? mn crkncj` dk npmjcncje`ks dk 38 hjts, bjmes (tbrknds) y u` kspncjedk ikierjn pmn`n (kmjij`n`de mes sklik`tes dk 14G). Nsjijsie, mn hjhmjetkcnIAC 3.6 nndn sepertk EMK dk 38 hjts y EDHC. K` rknmjdnd Qjsunm C++ 8.6 auku` trnipem` pnrn sus prkdkckserks (Qjsunm C++ `.x, Qjsunm C++ 1.6).

    Qjsunm C++ 1.6 prksk`tn mn tkc`emeln dk ceipjmncj` is nvn`zndn pnrnpreducjr npmjcncje`ks dk 38 hjts is rpjdns y dk ik`er tnine. Tnihj` j`cer-pern mns cnrnctkrstjcns y pnmnhrns cmnvk is nctunmks dkm kst`dnr N@SJ. Mns `uk-vns IAC&T ceihj`n` mn ajnhjmjdnd y preductjvjdnd dk mn hjhmjetkcn IAC ce` mn

    hjhmjetkcn NTM (Nctjvk Tkipmntk Mjhrnry). Bnck is acjm km dksnrremme dk seatwn-rk hnsnde k` ceipe`k`tks (sepertk CEI). J`cerpern u` lrn` `ikre dk `ukveskmkik`tes djskndes pnrn kxpmetnr mns tkc`emelns dk J`tkr`kt.

    Qjsunm C++ 1.6 prepercje`n vnrjns aerins dk trnhnoe ce` hnsks dk dntes. Verkokipme, utjmjzn`de mn hjhmjetkcn dk cmnsks IAC, pedkies rkcurrjr n mns cmnsksDNE (Dntn Ncckss Ehokcts - ehoktes dk ncckse n dntes) e n mns cmnsks EDHC(Epk` DntnHnsk Ce``kctjvjty- ce`kctjvjdnd nhjkrtn dk hnsks dk dntes). Vkre mns

    tkc`emelns nctunmks dk ncckse n dntes tjk`k` quk sntjsanckr mes `ukves ksck`nrjesdkin`dndes per mns kiprksns, tnmks ceie mes sjstkins dk j`aerincj` hnsndes k`mn \kh. K` kstn m`kn, Ijcreseat earkck utjmjznr EMK DH ceie u` prevkkder dkdntes y ehoktes NDE(NctjvkR Dntn Ehokcts- ehoktes NctjvkRpnrn ncckse n dn-tes), ceie tkc`emeln dk ncckse n dntes, nrluik`tn`de quk km ncckse n dntes hn-snde k` EMK DH y NDE ks ndkcunde pnrn u`n lnin nipmjn dk npmjcncje`ks,dksdk pkqukes preckses k` kstncje`ks dk trnhnoe n npmjcncje`ks \khn lrn` kscn-mn. EMK DH ks u` ce`ou`te dk j`tkrancks CEI quk pukdk prepercje`nr ncckseu`jaerik n mes dntes lunrdndes k` djvkrsns auk`tks dk j`aerincj`. Km iedkme dkehokte NDE dkaj`k u`n cemkccj` dk ehoktes prelrninhmks, quk sepertn` km iedk-me dk ehokte ceipe`k`tk (CEI) y mn nuteintjzncj` EMK, quk pukdk` j`tkrnc-cje`nr ce` mn tkc`emeln EMK DH. Km iedkme dk ehokte dk NDE, ceipnrnde ce`

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    21/133

    VXMELE RRJJJ

    etres ehoktes dk ncckse n dntes ceie XDE e DNE, tjk`k ik`es ehoktes y ks issjipmk dk utjmjznr.

    Kstk mjhre, kscrjte ce` mn vkrsj` 1 dk Qjsunm C++, ks ce`tj`uncj` dkm puhmj-cnde n`tkrjerik`tk, Qjsunm C++Npmjcncje`ks pnrn \j`38. Ver me tn`te, pnrnnherdnr su ce`tk`jde km nuter bn supukste quk km mkcter ce`eck tede me kxpukste k`km ttume n`tkrjerik`tk cjtnde. Kstk mjhre trntn tkins is nvn`zndes, ceie km sjs-tkin dk nyudn BTIM, bjmes, ceiu`jcncje`ks XS-838, ce`tremks NctjvkR, tkc`e-meln CEI, hjhmjetkcn NTM, djspesjtjves ICJ, hjhmjetkcns dj`ijcns, ncckse n

    hnsks dk dntes, J`tkr`kt, Qjsunm J`tkrdkv, npmjcncje`ks dk J`tkr`kt, DjrkctDrnw,Djrkct3DXI y DjrkctSeu`d. Tedes mes tkins sk bn` decuik`tn`de ce` nhu`dn`-tks kokipmes rksukmtes, me quk mk ancjmjtnr km nprk`djznok.

    Kstk mjhre ks km cunrte dk u`n cemkccj` dk cuntre mjhres erjk`tndes nm dksnrre-mme dk npmjcncje`ks ce` C/C++. K`trk mes cuntre, y k` km erdk` kspkcjajcnde, cu-

    hrk` mes sjlujk`tks nspkctes? prelrnincj` ce` C, prelrnincj` erjk`tndn nehoktes ce` C++, dksnrremme dk npmjcncje`ks pnrn \j`dews hnsndns k` ehoktes, y

    prelrnincj` nvn`zndn k` \j`dews j`cmuyk`de J`tkr`kt.

    Km prjikre, Curse dk prelrnincj` C/C++, nhnrcn tede me rkmntjve n mn pre-lrnincj` kstructurndn ce` C. Tnihj` j`cmuyk djvkrses nmlerjties dk usecei` ns ceie kstructurns dj`ijcns dk dntes.

    Km sklu`de, Vrelrnincj` erjk`tndn n ehoktes ce` C++, kstudjn ceie su`eihrk j`djcn km dksnrremme dk npmjcncje`ks erjk`tndns n ehoktes. Kstn tkc`emelnks jiprkscj`djhmk ce`eckrmn sj qukrkies dksnrremmnr npmjcncje`ks utjmjzn`de hj-

    hmjetkcns dk cmnsks ceie mns IAC&NTM dk Ijcreseat Qjsunm C++.

    Km tkrckre, Qjsunm C++ - Npmjcncje`ks pnrn \j`38, mk k`skn au`dnik`tnm-ik`tk cie dksnrremmnr npmjcncje`ks pnrn \j`dews (npmjcncje`ks ce` u`n j`tkranzlrajcn hnsndn k` vk`tn`ns).

    Z stk, km cunrte, Qjsunm C++ - Vrelrnincj` nvn`zndn, ceipmkik`tn nm mj-hre n`tkrjer nherdn`de tkins is ceipmkoes, n mes quk ik bk rkakrjde n`tkrjer-ik`tk.

    Nlrndkcjijk`tes

    Bk rkcjhjde jdkns y sulkrk`cjns dk nmlu`ns pkrse`ns durn`tk mn prkpnrncj` dk ks-tk mjhre, k`trk mns quk sk k`cuk`trn`, cie `e, ijs nmui`es, quk ce` su j`tkrs per

    nprk`dkr ik bnck` rkamkxje`nr sehrk ehoktjves quk n prjikrn vjstn pnrkck` j`nm-cn`znhmks, pkre quk u`n vkz melrndes sjrvk` pnrn quk tedes nprk`dnies7 n tedeskmmes mks kstey arn`cnik`tk nlrndkcjde.

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    22/133

    RRJQ QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    K` kspkcjnm, qujkre kxprksnr ij nlrndkcjijk`te n Nmae`s Le`zmkz per susjdkns quk sjkiprk se` hjk`vk`jdns, n Escnr Lnrcn Vehmncj`y Xnankm Tercjdn

    per sus huk`ns rkceik`dncje`ks y npertncje`ks, y n Dnvjd Ournde Le`zmkzpersu pnrtjcjpncj` k` mn cerrkccj` dk kstn ehrn, per sus npertncje`ks n mn ijsin yk` kspkcjnm, perquk sj` su kipke y cemnherncj` kstk mjhre pesjhmkik`tk `e bnhr-n j`cmujdeDjrkctR.

    Tnihj`, qujkre nlrndkckr n Ijcreseat Jhrjcn mn cksj` dk mes prelrnins j`-cmujdes k` km CD-XEI.

    Arn`cjsce Onvjkr Ckhnmmes Sjkrrnbttp?//www.aockhnmmes.ks/

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    23/133

    Anmtn` plj`ns...

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    24/133

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    25/133

    CNVT[ME 3A.O.Ckhnmmes/XN-IN

    CEI[@JCNCJE@KSKstk cnptume prksk`tn tc`jcns dk ceiu`jcncj` ce` etrns iquj`ns utjmjzn`de km

    pukrte skrjk. N`tks dk kipkznr km dksnrremme dk u`n npmjcncj` quk jipmkik`tkceiu`jcncje`ks skrjk, rksumtn tjm bnckr u`n hrkvk dkscrjpcj` dkm au`cje`nijk`te

    hsjce dk mn prepjn j tkrce`kxj` XS-838.

    Mns sknmks djspe`jhmks k` u` ce`kcter XS-838 kst` pk`sndns `jcnik`tk pn-rn nsklurnr mn cerrkctn trn`sijsj` y rkckpcj` dk dntes dksdk u` kqujpe dk`eij-`nde DTK (Dntn Tkrij`nm Kqujpik`t - Kqujpe tkrij`nm dk dntes) n u` DCK(Dntn Ceiiu`jcntje` Kqujpik`t- Kqujpe dk ceiu`jcncj` dk dntes). [` DTKks lk`krnmik`tk u` erdk`nder y u` DCK u` idki. Km k`mnck kst`dnr k`trk u`DTK y u` DCK sk pukdk vkr k` mn ajlurn sjlujk`tk.

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    26/133

    >>1 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    Mn au`cj` dk cndn u`n dk mns sknmks ks ceie sjluk?

    Sknm @eihrk Djrkccj` Au`cj`

    TxD Trn`sijttkd Dntn bncjn DCK Snmjdn dk dntes DTKXxD Xkckjvkd Dntn bncjn DTK K`trndn dk dntes DTKXTS Xkqukst Te Sk`d bncjn DCK DTK dkskn cnihjnr n iede trn`sijsj`CTS Cmknr Te Sk`d bncjn DTK DCK mjste pnrn trn`sijtjrDSX Dntn Skt Xkndy bncjn DTK DCK mjste pnrn ceiu`jcnr ce` DTK

    Sjl`nm Ceiie` M`kn cei` dkm cjrcujte (insn)DCD Dntn Cnrrjkr Dktkct bncjn DTK Dktkctnr sj kst ce`kctndeDTX Dntn Tkrij`nm Xkndy bncjn DCK Ve`k n trnhnonr nm idkiXJ Xj`l J`djcnter bncjn DTK N`u`cjn u`n mmnindn

    TxD sk k`cnrln dk trn`spertnr mes dntes skrjk bnstn km idki. Vnrn kmme, bn`tk`jde quk nctjvnrsk XTS, CTS, DSX y DTX.

    XxD, rkckpcj` dk dntes, `e dkpk`dk dk `j`lu`n etrn au`cj` XS-838.

    XTS tjk`k ceie ijsj` ce`iutnr u` idkiskij-dupmkxk`trk iedes dk rk-ckpcj` y trn`sijsj`. Cun`de km DTK qujkrk trn`sijtjr, j`aerin nm idki dk sudkske nctjvn`de kstn pntjmmn. Cun`de km idki ce`iutn pnrn trn`sijsj`, me j`-

    aerin nm DTK nctjvn`de mn pntjmmn CTS, j`djcn`de quk yn pukdk k`vjnr mes dntes.

    Km idki erjlk` `e trn`sijtk `j nctjvn su DSX bnstn rkcjhjr km te`e dk rks-pukstn dkm idki rkiete.

    DCD, dktkccj` dk sknm dk m`kn rkcjhjdn, sk nctjvn cun`de km idki rkcjhku`n pertndern rkietn. K` idkisskij-dupmkx, DCD sk nctjvn `jcnik`tk k` kmidki rkckpter.

    [`n vkz quk km idki kst ce`kctnde n mn m`kn, DTX dkhkr pkrin`kckr nc-tjvn ijk`trns durk mn ce`kxj`7 sj sk j`bjhk, sk preduck mn dksce`kxj`, j`tkrrui-

    pjk`de hruscnik tk km k`mnck.

    Ndkis dkm k`mnck kst`dnr, kxjstk` etres, ceie mn ce`kxj` dk`eij`ndnidki `ume (cnhmk dk skjs bjmes), utjmjzndn lk`krnmik`tk pnrn trn`sakrjr ajcbkresk`trk des erdk`nderks. Kstn ce`kxj`, ceie su `eihrk j`djcn, `e ks k` nhsemuteu` idki, sj`e u`n ce`kxj` djrkctn k`trk des erdk`nderks (DTK) pnrn ceiu`j-cnrsk sjlujk`de mns rklmns mljcns dkm preteceme XS-838. Etrn semucj` pnrn mn ce-iu`jcncj` DTK-DTK is sk`cjmmn tednvn, ks mn ce`kxj` dk des bjmes (TxD y

    XxD).

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    27/133

    CNVT[ME 3? CEI[@JCNCJE@KS >>3). Cun`de km trn`sijser rkcjhk kstk cnrctkr sk dktjk`k. Cun`de mn cemn dk k`trndn dkm rkckpter pukdk rkcjhjr is cnrnctkrks, k`vn u`

    cnrctkr dk ce`kxj` (`erinmik`tk NSCJJURE@ - 6x>>).

    Cun`de km trn`sijser rkcjhk kstk cnrctkr rkj`jcjn km k`ve dk cnrnctkrks.

    CEI[@JCNCJE@KS VEX KM V[KXTE SKXJKMn lkstj` dk mes pukrtes dk ceiu`jcncj` `e ks u`n tnrkn acjm. Me prjikre qukbny quk pk`snr ks quk mes dntes mmkln` n mes pukrtes dk aerin ns`cre`n7 ks dkcjr,su mmklndn ks jiprkvjsjhmk. Kste suljkrk quk km dnte quk mmkln tjk`k quk precksnrskj`ikdjntnik`tk, pukste quk pukdk` mmklnr etres dntes. Dk kstn tnrkn sk k`cnrln kmbnrdwnrkdkm VC, dk aerin quk cun`de dktkctn mn mmklndn dk u` dnte, j`tkrruipkkm amuoe `erinm dkm preckse pnrn ckdkr km ce`trem n mn rutj`n dk preckse dk ceiu`j-cncje`ks. Kstn rutj`n tjk`k quk skr u`n rutj`n dk \j`dews k` mulnr dk u`n rutj`ndk mn npmjcncj`. Kste ks ns per des rnze`ks?

    ###\j`dews dkhk in`tk`kr km ce`trem dk mn iumtjtnrkn. K` kakcte, sj mn mmklndn dku` dnte bjcjkrn quk sk trn`sajrjkrn km ce`trem dkm precksnder n su npmjcncj`,\j`dews pkrdkrn su bnhjmjdnd pnrn lkstje`nr mn iumtjtnrkn. Kste qujkrk dkcjrquk \j`dews tjk`k quk kstnr k`trk mn npmjcncj` y km bnrdwnrk.

    ###\j`dews `e pukdk djrjljr km dnte rkcjhjde djrkctnik`tk n mn npmjcncj`. Mnrnz` ks quk mes dntes quk sk rkcjhk` k` km pukrte dk ceiu`jcncje`ks `e mmk-ln` ce` mn jdk`tjdnd dk mn npmjcncj` quk mes tjk`k quk rkcjhjr. Ver me tn`te,

    \j`dews tjk`k quk lunrdnr k` u` huaakrmes dntes quk mmkln` pnrn u`n npmjcn-cj`. Vnrn qu npmjcncj`, dkhk dktkrij`nrsk per ndkmn`tnde7 kste ks, su npmj-

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    28/133

    >>2 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    cncj` dkhk bnhkrmk pkdjde n \j`dews mn prepjkdnd dkm pukrte utjmjzn`de mnau`cj` CrkntkAjmk.

    Cun`de u`n npmjcncj` semjcjtn n \j`dews mn prepjkdnd dk u` pukrte, \j`-dews sme sk me dnr sj `j`lu`n etrn npmjcncj` me tjk`k. Ver km ijsie ietjve,ijk`trns su npmjcncj` tjk`k km ce`trem dk u` pukrte, \j`dews sk me prebhk n mnsdkis npmjcncje`ks quk me semjcjtk`. Cun`de su npmjcncj` aj`nmjck mn epkrncj` dkK/S ce` u` pukrte, dkhk dkonr km ce`trem dkm ijsie pnrn quk etrns npmjcncje`ks

    pukdn` utjmjznrme, me cunm rkqujkrk mmninr n mn au`cj` CmeskBn`dmk.

    Ceie kokipme, vnies n rknmjznr u`n npmjcncj` quk pkrijtn trn`sakrjr dntesk`trk des erdk`nderks pkrse`nmks. Vnrn prehnr mn npmjcncj`, dkhk ce`kctnr vn

    pukrte dk ceiu`jcncje`ks mes des erdk`nderks. [`n vkz rknmjzndn mn ce`kxj`,nsklrksk dk quk kst hjk` bkcbn utjmjzn`de u` pnquktk dk ceiu`jcncje`ks ce-ikrcjnm, ceie km prelrninBjpkrTkrij`nmdk \j`dews.

    [`n aerin dk rknmjznr kstn npmjcncj` skrn utjmjzn`de mns au`cje`ks dk mn NVJdk \j`38 quk sk j`djcn` k` mn tnhmn sjlujk`tk?

    Au`cj` Dkscrjpcj`

    CrkntkAjmk Nhrjr u` pukrte dk ceiu`jcncje`ks

    SktCeiiInsg Kvk`tes quk skr` ntk`djdesSktupCeii Tnine dk mns cemns dk K/SVurlkCeii Tkrij`nr epkrncje`ks pk`djk`tks y mjipjnr cemnsLktCeiiStntk Ehtk`kr mns cnrnctkrstjcns dkm pukrte (kstructurn DCH)SktCeiiStntk Kstnhmkckr mns cnrnctkrstjcns dkm pukrteXkndAjmk Mkkr dntes\rjtkAjmk K`vjnr dntesCmeskBn`dmk Ckrrnr u` pukrte dk ceiu`jcncje`ks

    Etrns au`cje`ks djspe`jhmks k` mn NVJ dk 38 hjts se`? SktCeiiTjikeuts,KscnpkCeiiAu`ctje`, \njtCeiiKvk`t, LktMnstKrrer, CmknrCeiiKrrer,HujmdCeiiDCH, ktc. @e ehstn`tk, mn aerin is sk`cjmmn dk trnhnonr ce` km pukr-te skrjk k` npmjcncje`ks dk 38 hjts ks utjmjzn`de km ce`trem dk ceiu`jcncje`ksisceii38.ecx (Ijcreseat Ceiiu`jcntje`s Ce`trem), cukstj` quk vkrkies isndkmn`tk k` kstk ijsie cnptume.

    Vnrn kstnhmkckr u`n ceiu`jcncj` utjmjzn`de mn NVJ dk 38 hjts, sjln kstes pnses?

    >. Nhrn km pukrte dk ceiu`jcncj`. Vnrn rknmjznr kstn epkrncj`, mmnik n mn au`-cj` CrkntkAjmk ce` mes nrluik`tes? pukrte dk ceiu`jcncje`ks (CEI>,CEI8, ktc.), iede dk ncckse (mkkr y/e kscrjhjr), iede dk ceipnrtjcj`, ntrj-

    hutes dk sklurjdnd, nccj` n teinr tn`te sj kxjstk km ajcbkre ceie sj `e kxjstk,

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    29/133

    CNVT[ME 3? CEI[@JCNCJE@KS >>:

    y ntrjhutes dkm ajcbkre. Kstn au`cj` dkvukmvk u` bn`dmk quk jdk`tjajcn kmpukrte dk ceiu`jcncje`ks nhjkrte, e km vnmerKXXEXUAJMKU@ETUAE[@Dsjkm pukrte `e kst djspe`jhmk.

    8. Kstnhmkzcn mn iscnrn dk ceiu`jcncje`ks pnrn kspkcjajcnr mes kvk`tes qukskr` ntk`djdes. Vnrn rknmjznr kstn epkrncj`, mmnik n mn au`cj` SktCeii-Insg.

    3. Dkaj`n km tnine dk mes huaakrsdk mns cemns dk k`trndn y snmjdn. [tjmjck pnrnkmme mn au`cj` SktupCeii. @e ehstn`tk, kstn epkrncj` `e sjkiprk ks `kck-snrjn, pukste quk kxjstk` des huaakrsdkaj`jdes per eijsj`. N ce`tj`uncj`,mjipjk kstes huaakrs j`vecn`de n mn au`cj` VurlkCeii.

    4. Ce`struyn u`n kstructurn dk tjpe DCHquk kspkcjajquk mn ce`ajlurncj` dkmpukrte (DCH- dkvjck ce`trem hmecg). Vnrn kmme, mmnik n mn au`cj` LktCeii-Stntkpnrn ehtk`kr mn ce`ajlurncj` j`jcjnm dkm pukrte y, n pnrtjr dk kstes vnme-rks j`jcjnmks, iedjajquk mes ijkihres dk j`tkrs dk mn kstructurn DCH. Etrn

    pesjhjmjdnd ks utjmjznr mn au`cj`HujmdCeiiDCHce` mes nrluik`tes? dkaj-`jcj` dkm pukrtey kstructurn DCH. Mn dkaj`jcj` dkm pukrte ks u`n cndk`n dkcnrnctkrks ce` u` aerinte jlunm nm utjmjznde per mes nrluik`tes dk mn erdk`iedk(cei8?:166,`,2,>). Ver me tn`te kstn au`cj` sme iedjajcn mes ijki-

    hres vkmecjdnd dk trn`sijsj`, pnrjdnd, hjts per cnrctkr y hjts dk pnrndn dk mnkstructurn DCHkspkcjajcndn.

    ;. Kstnhmkzcn mn ce`ajlurncj` dkm pukrte. Vnrn rknmjznr kstn epkrncj`, mmnik n mnau`cj` SktCeiiStntk pnsn`de ceie nrluik`te mn kstructurn DCH, k` mnquk prkvjnik`tk sk nminck` djcbn ce`ajlurncj`.

    1. Cun`de qujkrn k`vjnr dntes nm pukrte dk ceiu`jcncje`ks, utjmjck mn au`cj`\rjtkAjmk, quk tjk`k mes sjlujk`tks pnriktres? km bn`dmk quk jdk`tjajcn kmdjspesjtjve dk ceiu`jcncje`ks (kstk vnmer ks dkvukmte per mn au`cj` Crkntk-

    Ajmk), u`n cndk`n dk cnrnctkrks quk ce`tjk`k mes cnrnctkrks k`vjndes, km `ik-re dk cnrnctkrks k`vjndes, u` pu`tkre n u`n vnrjnhmk quk nminck`n km `ikredk cnrnctkrks kscrjtes y u` pu`tkre n u`n kstructurn EQKXMNVVKD. Mn au`-cj` \rjtkAjmkdkvukmvk u` vnmer dk tjpe HEEM7 u` vnmer ANMSKsjl`jajcnquk bn ecurrjde u` krrer.

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    30/133

    >86 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    EQKXMNVVKD. Mn au`cj` XkndAjmkdkvukmvk u` vnmer dk tjpe HEEM7 u`vnmer ANMSKsjl`jajcn quk bn ecurrjde u` krrer.

    2. Cun`de ecurrk u` krrer durn`tk u`n epkrncj` dk ceiu`jcncje`ks, \j`dewshmequkn km pukrte cerrkspe`djk`tk, km cunm pkrin`kckr hmequknde bnstn quksk mmnik n mn au`cj` CmknrCeiiKrrer. Mes pnriktres dk kstn au`cj` se`?u` bn`dmknm djspesjtjve dk ceiu`jcncje`ks, u` pu`tkre n u`n vnrjnhmk quk rk-cjhk km cdjle dk krrer y u` pu`tkre n u`n vnrjnhmk quk rkcjhk km kstnde dkmdjspesjtjve dk ceiu`jcncje`ks.

    :. [tjmjck mn au`cj` CmeskBn`dmk pnrn ckrrnr km pukrte dk ceiu`jcncje`kscun`de stns aj`nmjck`. Sj ecurrk u` krrer, kstn au`cj` dkvukmvk u` ckre7 j`-

    vequk n LktMnstKrrersj qujkrk snhkr dk qu krrer sk trntn.

    Npmjcncj` \j`38 pnrn ceiu`jcncje`ks vn XS838

    Ceie kokipme, crkk u`n `ukvn npmjcncj` SDJ dk`eij`ndn Ceiiquk utjmjck u`ncnon dk djmele ceie vk`tn`n prj`cjpnm. Vnrn kmme, kokcutkNpp\jznrdy bnln qukmn cmnsk CCeiiQjkwskn u`n cmnsk dkrjvndn dk CAeriQjkw.

    N ce`tj`uncj`, nhrn km kdjter dk rkcurses y sjtk sehrk mn pmn`tjmmn dk djmele

    crkndn per eijsj` mes ce`tremks ce` mns prepjkdndks quk sk kspkcjajcn` n ce`tj-`uncj`?

    Ehokte Vrepjkdnd Qnmer

    Ktjquktn JDCnptje`

    JDCUSTNTJCTkxte n trn`sijtjr?

    Cnon dk tkxte JDIumtjmj`kQkrtjcnm scremm

    \n`t rktur`

    JDCUTRSS

    SKtjquktn JD

    Cnptje`JDCUSTNTJCTkxte rkcjhjde?

    Cnon dk tkxte JDIumtjmj`kQkrtjcnm scremm\n`t rktur`

    JDCUXRSSS

    Het` dk pumsncj` JDCnptje`

    JDCUK@QJNX&K`vjnr

    Km rksumtnde quk ehtk`dr skr sjijmnr nm iestrnde k` mn ajlurn sjlujk`tk?

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    31/133

    CNVT[ME 3? CEI[@JCNCJE@KS >8>

    Kokcutk Cmnss\jznrdy vj`cumk mns cnons dk tkxte ce` mns vnrjnhmks ijkihreiUtxy iUrxdk mn cmnsk CCeiiQjkw, y km het` ce` mn vnrjnhmk iUhete`K`vjnrijkihre dk mn ijsin cmnsk.

    cmnss CCeiiQjkw ? puhmjc CAeriQjkw{// ...puhmjc?

    //{{NARUDNTN(CCeiiQjkw)

    k`ui { JDD 9 JDDUCEIIUAEXI }7CHutte` iUhete`K`vjnr7CStrj`l iUrx7CStrj`l iUtx7//}}NARUDNTN

    // ...}7

    N ce`tj`uncj`, iedjajquk mn hnrrn dk ik`s ce` mes ik`s y mns rdk`ks quksk kspkcjajcn` k` mn tnhmn sjlujk`tk?

    Ehokte Vrepjkdnd Qnmer

    Ik` Ce`kxj` Cnptje`Vepup

    Ce`k&xj`S

    Erdk` Kstnhmkckr JDCnptje`

    JDUCE@KRJE@UKSTNHMKCKX&Kstnhmkckr

    Erdk` Certnr JDCnptje`

    JDUCE@KRJE@UCEXTNX&Certnr

    Skpnrnder Skpnrnter S

    Erdk` Snmjr JDCnptje` JDUNVVUKRJT&Snmjr

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    32/133

    >88 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    Ik` Ce`ajlurncj` Cnptje`Vepup

    &Ce`ajlurncj`S

    Erdk` Vnriktres CEI JDCnptje`

    JDUCE@AJLUVNXNI&Vnriktres CEI

    Ik` Nyudn Cnptje`Vepup

    &NyudnS

    Erdk` Nckrcn dk JDCnptje`

    JDUNVVUNHE[T&Nckrcn dk Ceii...

    Mn erdk` Vnriktres CEIvjsunmjznr u`n cnon dk djmele, quk pkrijtjr nmusunrje kstnhmkckr mns cnrnctkrstjcns hnoe mns quk sk rknmjznr mn ceiu`jcncj`.Skl` kste, vnies n djsknr u`n cnon dk djmele (JDDUVNXNIKTXESCEI) ce`

    mes ce`tremks quk sk j`djcn` k` mn tnhmn sjlujk`tk?

    Ehokte Vrepjkdnd Qnmer

    Ktjquktn Cnptje` Vukrte?Mjstn dkspmklnhmk JD

    JtkisJDCUV[KXTECEI>, CEI8, CEI3, CEI4

    Ktjquktn Cnptje` Hnudjes?Mjstn dkspmklnhmk JD

    JtkisJDCUHN[DJES366, 166, >866, 8466, ..., 8;1666

    Ktjquktn Cnptje` Vnrjdnd?Mjstn dkspmklnhmk JD

    JtkisJDCUVNXJDND

    @j`lu`n, Vnr, Jipnr, Inrcn, KspncjeKtjquktn Cnptje` Hjts per cnrctkr?Mjstn dkspmklnhmk JD

    JtkisJDCUHJTSCNX4, ;, 1, , >.;, 8

    Ktjquktn Cnptje` Ce`trem dk amuoe?Mjstn dkspmklnhmk JD

    JtkisJDCUCE@TXEMAM[OE

    @j`lu`e, Re`/Reaa, Bnrdwnrk(DTX/DSX), Bnrdwnrk (XTS/CTS)

    Het` dk pumsncj` JDCnptje`Dkanumt hutte`

    JDEG&NckptnrS

    Het` dk pumsncj` JDCnptje`

    JDCN@CKM&Cn`ckmnr

    Het` dk pumsncj` JDCnptje`

    JDCUDKAN[MT&Xkstnurnr

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    33/133

    CNVT[ME 3? CEI[@JCNCJE@KS >83

    Mn cnon dk djmele djskndn skr sjijmnr n mn sjlujk`tk?

    N ce`tj`uncj`, dksdk km kdjter dk rkcurses, skmkccje`k mn cnon dk djmele kj`vequk n Cmnss\jznrd. Kste mk pkrijtjr nndjr n mn npmjcncj` u`n cmnsk CVn-rniCeidkrjvndn dk CDjnmel, hnsndn k` mn pmn`tjmmn JDDUVNXNIKTXESCEIquk ncnhn dk djsknr. Lunrdk mn dkcmnrncj` y mn dkaj`jcj` dk kstn cmnsk k` mes aj-cbkrespnrnicei.bypnrnicei.cpp. Dkspus, nndn n mn cmnsk CVnrniCeimnsvnrjnhmks ijkihre iU`Vukrte, iU`Hnudjes, iU`Vnrjdnd, iU`HjtsCnr,iU`HjtsVnrndny iU`Ce`tremAmuoevj`cumndns n cndn u`n dk mns mjstns dkspmkln-

    hmks cerrkspe`djk`tks.

    cmnss CVnrniCei ? puhmjc CDjnmel{// ...// Djnmel Dntn

    //{{NARUDNTN(CVnrniCei)k`ui { JDD 9 JDDUVNXNIKTXESCEI }7j`t iU`HjtsCnr7j`t iU`Hnudjes7j`t iU`HjtsVnrndn7

    j`t iU`Ce`tremAmuoe7j`t iU`Vukrte7j`t iU`Vnrjdnd7//}}NARUDNTN

    // ...}7

    Xkljstre dk \j`dews

    Qnies n nminck`nr k` km rkljstre dk \j`dews mns cnrnctkrstjcns per eijsj` hnoemns quk sk rknmjznr mn ceiu`jcncj`. Me quk prktk`dkies ks nminck`nr mn mtjince`ajlurncj` utjmjzndn, ceie ce`ajlurncj` per eijsj`, pnrn mn sjlujk`tk vkz

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    34/133

    >84 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    quk sk utjmjck mn npmjcncj`. Mn au`cj` SktXkljstryGky dk mn cmnsk C\j`Npppkrijtk nminck`nr mns cnrnctkrstjcns dk mn npmjcncj` k` km rkljstre dk \j`dewsce` mn cmnvk BGKZUC[XXK@TU[SKX]Seatwnrk]... SktXkljstryGky ks mmnindn

    per mn au`cj` J`jtJ`stn`ckdk mn npmjcncj`. Tjk`k u` pnriktre quk pkrijtk ks-pkcjajcnr km `eihrk dk mn cmnvk. Skl` me kxpukste, nhrn km ajcbkre ceii.cppyiedjajquk k` mn au`cj` J`jtJ`stn`ckmn mmnindn n SktXkljstryGkyceie sk j`dj-cn n ce`tj`uncj ?

    SktXkljstryGky(UT("Npp Ceii"))7

    Cun`de pestkrjerik`tk j`vequkies n mns au`cje`ks ijkihre LktVreajmkJ`t,\rjtkVreajmkJ`t, LktVreajmkStrj`l, y \rjtkVreajmkStrj`ldk mn cmnsk C\j`Npp,

    stns epkrnrn` sehrk km rkljstre dk \j`dews k` mulnr dk bnckrme sehrk u` ajcbkrece` kxtk`sj` j`j.

    J`tkranz dk ceiu`jcncje`ks

    Vnrn ancjmjtnr mn jipmkik`tncj` dk mns ceiu`jcncje`ks vn XS838, vnies n ji-pmkik`tnr u`n j`tkranz ce` mns epkrncje`ks is ceiu`ks. Skl` bkies dksnrre-mmnde `ukstrn npmjcncj`, j`tklrnrkies kstn j`tkranz quk rksuijies k` mn tnhmnsjlujk`tk, k` mn cmnsk dk mn vjstn?

    Au`cj` Dkscrjpcj`

    J`jcjnr Mkk dkm rkljstre dk \j`dews mn ce`ajlurncj` j`jcjnm.

    Tkrij`nr Lunrdn k` km rkljstre dk \j`dews mn ce`ajlurncj`nctunm.

    KstnhmkckrCe`kxje` Nhrk km pukrte dk ceiu`jcncje`ks.

    Ce`ajlurnrDjsCei Kstnhmkck mes pnriktres ce` mes quk sk rknmjznr` mnsceiu`jcncje`ks.

    MkkrCnrnctkrksVukrte Mkk u` hytk dk mn cemn dk k`trndn dkm pukrte dk ce-iu`jcncje`ks.

    KscrjhjrCnrsVukrte Kscrjhk u` hytk k` mn cemn dk snmjdn dkm pukrte dkceiu`jcncje`ks.

    CertnrCe`kxje` Cjkrrn km pukrte dk ceiu`jcncje`ks.

    Ik`snokDkKrrer Ce`vjkrtk u` cdjle dk krrer k` km ik`snok cerrks-pe`djk`tk.

    Ce`tremnrKvk`tes Bjme pnrn `etjajcnr n mn npmjcncj` km kvk`te quk bnecurrjde sehrk km pukrte dk ceiu`jcncje`ks.

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    35/133

    CNVT[ME 3? CEI[@JCNCJE@KS >8;

    Nndn mn dkcmnrncj` dk kstns au`cje`ks y dk mns vnrjnhmks `kcksnrjns pnrn sujipmkik`tncj` n mn dkcmnrncj` dk mn cmnsk CCeiiQjkw.

    #dkaj`k \IUKQK@TEUCEI \IU[SKX + >66 // ik`snok dk `etjajcncj`[J@T Ce`tremnrKvk`tes(MVQEJD p)7 // bjme

    cmnss CCeiiQjkw ? puhmjc CAeriQjkw{// ...

    // Epkrntje`spuhmjc?/////////////////////////////////////////////////// J`tkranz pnrn ceiu`jcncje`ksstntjc j`t iUj`dVukrte7stntjc j`t iUj`dHnudjes7stntjc j`t iUj`dVnrjdnd7stntjc j`t iUj`dHjtsCnr7stntjc j`t iUj`dHjtsVnrndn7stntjc j`t iUj`dCe`tremAmuoe7

    BN@DMK iUbDjsCei7 // bn`dmk nm djspesjtjve dk ceiu`jcncje`ksEQKXMNVVKD iUsEvkrXknd7 // utjmjzndn k` u`n k`trndn ns`cre`nEQKXMNVVKD iUsEvkr\rjtk7 // utjmjzndn k` u`n snmjdn ns`cre`n[J@T iUwTnhmnHnudjesW>3Y7 // tnhmn dk vkmecjdndks

    HZTK iUTnhmnVnrjdndW;Y7 // tnhmn dk pnrjdndksHZTK iUTnhmnHjtsVnrndnW3Y7 // tnhmn hjts dk pnrndnHEEM iUCe`kxje`Kstnhmkcjdn7 // TX[K sj km pukrte auk nhjkrteHEEM iUhBjmeNctjve7 // TX[K sj km bjme kst nctjve

    stntjc vejd J`jcjnr()7stntjc vejd Tkrij`nr()7HEEM KstnhmkckrCe`kxje`()7HEEM Ce`ajlurnrDjsCei()7HEEM CertnrCe`kxje`()7j`t MkkrCnrnctkrksVukrte(HZTK *pHytksMkjdes, j`t HmequkInx)7

    HEEM KscrjhjrCnrsVukrte(HZTK *pHytksNKscrjhjr, D\EXD dwHytks)7vejd Ik`snokDkKrrer(D\EXD Krrer)7

    /////////////////////////////////////////////////// ...}7

    Mns vnrjnhmks iUj`d... ce`tjk`k` km `djck dkm kmkik`te skmkccje`nde dk mnsmjstns dk mn cnon dk djmele Ce`ajlurncj`.

    N ce`tj`uncj` kscrjhjrkies cndn u`n dk mns au`cje`ks dkscrjtns. N`tks, j`jcjk

    mns vnrjnhmks ksttjcns y dkaj`n mns cndk`ns dk cnrnctkrks `kcksnrjns pnrn km rkljstredk \j`dews k` mn jipmkik`tncj` dk mn cmnsk CCeiiQjkw.

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    36/133

    >81 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    j`t CCeiiQjkw??iUj`dVukrte 9 >7 // CEI8j`t CCeiiQjkw??iUj`dHnudjes 9 17 // :166j`t CCeiiQjkw??iUj`dVnrjdnd 9 67 // `j`lu`n

    j`t CCeiiQjkw??iUj`dHjtsCnr 9 47 // 2j`t CCeiiQjkw??iUj`dHjtsVnrndn 9 67 // >j`t CCeiiQjkw??iUj`dCe`tremAmuoe 9 >7 // Re`/Reaa

    stntjc cbnr szCeiuWY 9 "Ceiu`jcncje`ks"7stntjc cbnr szVukrteWY 9 "Vukrte"7stntjc cbnr szHnudjesWY 9 "Hnudjes"7stntjc cbnr szVnrjdndWY 9 "Vnrjdnd"7stntjc cbnr szHjtsCnrWY 9 "HjtsCnr"7stntjc cbnr szHjtsVnrndnWY 9 "HjtsVnrndn"7stntjc cbnr szCe`tremAmuoeWY 9 "Ce`tremAmuoe"7

    Aj`nmik`tk, j`jcjk mn vnrjnhmk iUbDjsCein @[MMy mns vnrjnhmks iUCe`k-xje`Kstnhmkcjdny iUhBjmeNctjven ANMSK, k` km ce`structer dk su cmnsk.

    Au`cj` J`jcjnr

    Mn au`cj`J`jcjnrehtjk`k dkm rkljstre dk \j`dews mn ce`ajlurncj` per eijsj`dkm djspesjtjve dk ceiu`jcncje`ks.

    vejd CCeiiQjkw??J`jcjnr()

    {C\j`Npp *pNpp9 NaxLktNpp()7// Xkcupkrnr ce`ajlurncj` dkm rkljstre dk \j`dewsiUj`dVukrte 9 pNpp-0LktVreajmkJ`t(szCeiu, szVukrte, >)7iUj`dHnudjes 9 pNpp-0LktVreajmkJ`t(szCeiu, szHnudjes, 1)7iUj`dVnrjdnd 9 pNpp-0LktVreajmkJ`t(szCeiu, szVnrjdnd, 6)7iUj`dHjtsCnr 9 pNpp-0LktVreajmkJ`t(szCeiu, szHjtsCnr, 4)7iUj`dHjtsVnrndn 9 pNpp-0LktVreajmkJ`t(szCeiu, szHjtsVnrndn, 6)7iUj`dCe`tremAmuoe 9 pNpp-0LktVreajmkJ`t(szCeiu, szCe`tremAmuoe, >)7

    }

    Mn au`cj` LktVreajmkJ`t dk mn cmnsk C\j`Npp rkcupkrn dkm rkljstre dk\j`dews km k`tkre nsecjnde ce` mn cndk`n sz...(sklu`de nrluik`te) cerrkspe`-djk`tk n mn skccj` szCeiudk mn cmnvk kspkcjajcndn per mn au`cj` SktXkljstry-Gky. Sj mn k`trndn kspkcjajcndn per sz...`e sk k`cuk`trn, mn au`cj` dkvukmvk kmvnmer kspkcjajcnde per km nrluik`te tkrckre.

    Au`cj` Tkrij`nr

    Mn au`cj` Tkrij`nrskr j`vecndn cun`de sk certn mn ceiu`jcncj` pnrn lunrdnr

    k` km rkljstre dk \j`dews mn ce`ajlurncj` nctunm dkm djspesjtjve dk ceiu`jcn-cje`ks.

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    37/133

    CNVT[ME 3? CEI[@JCNCJE@KS >8. J`vecn n mn au`cj` CrkntkAjmkpnrn nhrjr km pukrte dk ceiu`jcncje`ks. Bnydes aerins dk nhrjr u` pukrte dk ceiu`jcncje`ks? semnpndn(evkrmnppkd) y `esemnpndn (`e`evkrmnppkd). Mn decuik`tncj` dkm SDG dk \j`38 utjmjzn mestrij`es ns`cre`ey s`cre`e. [` pukrte nhjkrte pnrn epkrncje`ks semnpndns

    pkrijtk imtjpmks bjmes rknmjzn`de epkrncje`ks dk K/S (XkndAjmke \rjtkAj-mk) sjiumt`kns, ns ceie kokcutnr etrn tnrkn ijk`trns mns epkrncje`ks kst`

    pk`djk`tks. Ndkis, km ceipertnijk`te dk mns epkrncje`ks semnpndns pkrijtkn u` `jce bjme rknmjznr pktjcje`ks djakrk`tks y kokcutnr tnrkns k` sklu`de pmn-`e ijk`trns mns epkrncje`ks kst` pk`djk`tks. Sj km pukrte sk nhrk pnrn epkrn-cje`ks `e semnpndns, km bjme qukdn hmequknde ijk`trns mn epkrncj` dk K/Ssemjcjtndn `e kst ceipmktndn7 u`n vkz ceipmktndn, km bjme pukdk sklujr trnhn-

    on`de. K` kstk cnse, sj u` bjme kst hmequknde kspkrn`de n quk su epkrncj` dkK/S aj`nmjck, cunmqujkr etre bjme quk rkqujkrn u`n epkrncj` dk K/S qukdnr

    hmequknde. Kstn mtjin aerin dk nhrjr u` pukrte ks tjm cun`de km sjstkin epk-rntjve `e sepertn epkrncje`ks dk K/S semnpndns. Km cdjle sjlujk`tk j`djcn mnaerin nprepjndn dk nhrjr u` pukrte dk ceiu`jcncje`ks dk aerin semnpndn?

    iUbDjsCei 9 CrkntkAjmk(szVukrte,LK@KXJCUXKND | LK@KXJCU\XJTK,6, // ncckse kxcmusjve@[MM, // sj` ntrjhutes dk sklurjdndEVK@UKRJSTJ@L,AJMKUAMNLUEQKXMNVVKD,@[MM)7

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    38/133

    >82 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    Cun`de sk kspkcjajcn km pnriktre AJMKUAMNLUEQKXMNVVKD, mns au`cje-`ks XkndAjmky \rjtkAjmkdkhk` kspkcjajcnr u`n kstructurn EQKXMNVVKD.

    8. J`vecn n mn au`cj` SktCeiiInsg pnrn kspkcjajcnr mes kvk`tes quk skr`ntk`djdes. Ver kokipme?

    SktCeiiInsg( iUbDjsCei, KQUXRCBNX | KQUTRKIVTZ |KQUXR26A[MM | KQUKXX)7

    Km pnriktre iUbDjsCei ks u` bn`dmknm djspesjtjve dk ceiu`jcncje`ks dk-vukmte per mn au`cj` CrkntkAjmk. Km etre pnriktre kspkcjajcn mes kvk`tes qukse` bnhjmjtndes. [` vnmer ckre j`bnhjmjtn tedes mes kvk`tes. Ver kokipme,

    KQUXRCBNXsk preduck cun`de sk rkcjhk u` cnrctkr k` mn cemn dk k`trndn7KQUTRKIVTZsk preduck cun`de sk k`vn km mtjie cnrctkr dk mn cemn dk sn-

    mjdn7KQUXR26A[MMsk preduck cun`de mn cemn dk k`trndn kst mmk`n nm 26%7KQUKXX suckdk cun`de sk preduck nmlu`e dk mes sjlujk`tks krrerks?CKUAXNIK, CKUEQKXX[@, e CKUXRVNXJTZ.

    3. J`vecn n mn au`cj` SktupCeiipnrn kspkcjajcnr km tnine k` hytks dk mnscemns dk rkckpcj` y dk trn`sijsj`.

    SktupCeii(iUbDjsCei, CEMNXR, CEMNTR)7

    4. J`vecn n mn au`cj` VurlkCeiipnrn tkrij`nr mns epkrncje`ks dk mkcturn ykscrjturn pk`djk`tks y mjipjnr mns cemns dk rkckpcj` y dk trn`sijsj`.

    VurlkCeii( iUbDjsCei, V[XLKUTRNHEXT | V[XLKUXRNHEXT |V[XLKUTRCMKNX | V[XLKUXRCMKNX )7

    ;. Ce`struyk u`n kstructurn DCH k j`vecn n mn au`cj` SktCeiiStntk pnrnce`ajlurnr km djspesjtjve dk ceiu`jcncje`ks ce` mes vnmerks nminck`ndes k`djcbn kstructurn.

    1. J`vecn n mn au`cj` SktCeiiTjikeutspnrn kstnhmkckr mes tjkipes mijtkspnrn mns epkrncje`ks dk rkckpcj` y trn`sijsj`.

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    39/133

    CNVT[ME 3? CEI[@JCNCJE@KS >8:

    cbnr szVukrteW>6Y7HEEM hKxjte 9 ANMSK7

    // Aerinr mn cndk`n "CEI" is km `ikre dk djspesjtjvewsprj`ta(szVukrte, "CEI%d", iUj`dVukrte + >)7

    // Ckrrnr km pukrte sj kstuvjkrn nhjkrteja (iUbDjsCei) CmeskBn`dmk(iUbDjsCei)7

    // Nhrjr km pukrte dk ceiu`jcncje`ksiUbDjsCei 9 CrkntkAjmk(szVukrte,

    LK@KXJCUXKND | LK@KXJCU\XJTK,6, // ncckse kxcmusjve@[MM, // sj` ntrjhutes dk sklurjdnd

    EVK@UKRJSTJ@L,AJMKUAMNLUEQKXMNVVKD,@[MM)7

    ja( iUbDjsCei 99 J@QNMJDUBN@DMKUQNM[K ){// Qjsunmjznr km krrer ecurrjde.Ik`snokDkKrrer( LktMnstKrrer() )7IkssnlkHkkp(6xAAAAAAAA)7rktur` ANMSK7

    }

    // Kspkcjajcnr mes kvk`tes quk skr` ntk`djdesSktCeiiInsg( iUbDjsCei, KQUXRCBNX | KQUTRKIVTZ | KQUXR26A[MM | KQUKXX)7

    // Kstnhmkckr km tnine dk mns cemns dk rkckpcj` y dk trn`sijsj`SktupCeii(iUbDjsCei, CEMNXR, CEMNTR)7

    // Tkrij`nr mns epkrncje`ks dk mkcturn y kscrjturn pk`djk`tks// y mjipjnr mns cemns Xx y TxVurlkCeii( iUbDjsCei, V[XLKUTRNHEXT | V[XLKUXRNHEXT |

    V[XLKUTRCMKNX | V[XLKUXRCMKNX )7

    // Kstnhmkckr mes pnriktres dk mn ceiu`jcncj`hKxjte 9 Ce`ajlurnrDjsCei()7

    ja ( hKxjte ){iUCe`kxje`Kstnhmkcjdn 9 TX[K7// Crknr u` bjme skcu`dnrje pnrn vkr qu kvk`te ecurrkja ( NaxHklj`Tbrknd(Ce`tremnrKvk`tes, tbjs) 99 @[MM ){NaxIkssnlkHex( "Krrer? @e sk pukdk j`jcjnr km bjme",

    IHUEG | IHUJCE@KRCMNINTJE@ )7iUCe`kxje`Kstnhmkcjdn 9 ANMSK7CmeskBn`dmk(iUbDjsCei)7rktur` ANMSK7

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    40/133

    >36 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    }iUhBjmeNctjve 9 TX[K7// K`vjnr mn sknm DTX (dntn-tkrij`nm-rkndy).

    KscnpkCeiiAu`ctje`(iUbDjsCei, SKTDTX)7}kmsk{NaxIkssnlkHex( "Krrer? @e sk pukdk ce`ajlurnr km djspesjtjve",

    IHUEG | IHUJCE@KRCMNINTJE@ )7iUCe`kxje`Kstnhmkcjdn 9 ANMSK7CmeskBn`dmk(iUbDjsCei)7

    }rktur` hKxjte7

    }

    Dkaj`n mns ce`stn`tks CEMNXR y CEMNTR, quk dkaj`k` mes tnines dk mnscemns dk rkckpcj` y trn`sijsj` rkspkctjvnik`tk, k` km ajcbkre ceiivjkw.cpp?

    #dkaj`k CEMNXR 46:1#dkaj`k CEMNTR 46:1

    Au`cj` Ik`snokDkKrrer

    Mn au`cj` Ik`snokDkKrrerce`vjkrtk u` cdjle dk krrer k` km cerrkspe`djk`tk

    ik`snok ehtk`jde dkm sjstkin, y vjsunmjzn u` djmele ce` djcbe ik`snok. Mn ce`-vkrsj` mn bnck j`vecn`de n mn au`cj` AerintIkssnlkdk mn NVJ, quk ehtjk`k kmik`snok dk mn tnhmn dk ik`snoks dkm sjstkin y me nminck`n k` u` huaakrk` ikie-rjn quk crkn nuteitjcnik`tk j`vecn`de n MecnmNmmec. [`n vkz vjsunmjznde kmik`snok, mn au`cj` Ik`snokDkKrrer j`vecn n MecnmArkk pnrn mjhkrnr km huaakrnsjl`nde per MecnmNmmecdksdk AerintIkssnlk (pnrn ehtk`kr is j`aerincj`sehrk kstn au`cj`, ce`sumtk mn nyudn k` m`kn).

    vejd CCeiiQjkw??Ik`snokDkKrrer( D\EXD `Krrer ){MVQEJD mpIsl7

    ??AerintIkssnlk(AEXINTUIKSSNLKUNMMECNTKUH[AAKX | AEXINTUIKSSNLKUAXEIUSZSTKI,@[MM,`Krrer,INGKMN@LJD(MN@LU@K[TXNM, S[HMN@LUDKAN[MT),(MVTSTX) &mpIsl,6,@[MM

    )7

    // Iestrnr km krrerNaxIkssnlkHex( (MVCTSTX)mpIsl, IHUEG | IHUJCE@KRCMNINTJE@ )7

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    41/133

    CNVT[ME 3? CEI[@JCNCJE@KS >3>

    // Mjhkrnr km huaakr??MecnmArkk( mpIsl )7

    }

    Au`cj` Ce`ajlurnrDjsCei

    Vnrn ce`strujr mn kstructurn DCH y ce`ajlurnr km djspesjtjve dk ceiu`jcncje`ksns ceie pnrn kstnhmkckr mes tjkipes mijtks pnrn mns epkrncje`ks dk rkckpcj` ydk trn`sijsj`,KstnhmkckrCe`kxje`j`vecn n mn au`cj` Ce`ajlurnrDjsCei.

    HEEM CCeiiQjkw??Ce`ajlurnrDjsCei(){

    HZTK hKstnhmkckr7DCH dch7

    dch.DCHmk`ltb 9 sjzkea(DCH)7LktCeiiStntk(iUbDjsCei, &dch)7

    dch.HnudXntk 9 iUwTnhmnHnudjesWiUj`dHnudjesY7dch.Vnrjty 9 iUTnhmnVnrjdndWiUj`dVnrjdndY7dch.HytkSjzk 9 (HZTK)(iUj`dHjtsCnr + 4)7dch.StepHjts 9 iUTnhmnHjtsVnrndnWiUj`dHjtsVnrndnY7

    // Kstnhmkckr km ce`trem dk amuoe seatwnrkhKstnhmkckr 9 (HZTK)(iUj`dCe`tremAmuoe 99 >)7 // Re`/Reaadch.aJ`R 9 dch.aEutR 9 hKstnhmkckr7dch.Re`Cbnr 9 6x>>7 // [email protected] 9 6x>37 // NSCJJUREAAdch.Re`Mji 9 >667dch.ReaaMji 9 >667

    // Kstnhmkckr km ce`trem dk amuoe bnrdwnrkhKstnhmkckr 9 (HZTK)(iUj`dCe`tremAmuoe 99 8)7 // DTX/DSXdch.aEutxDsrAmew 9 hKstnhmkckr7

    ja (hKstnhmkckr)dch.aDtrCe`trem 9 DTXUCE@TXEMUBN@DSBNGK7

    kmskdch.aDtrCe`trem 9 DTXUCE@TXEMUK@NHMK7

    hKstnhmkckr 9 (HZTK)(iUj`dCe`tremAmuoe 99 3)7 // XTS/CTSdch.aEutxCtsAmew 9 hKstnhmkckr7ja (hKstnhmkckr)dch.aXtsCe`trem 9 XTSUCE@TXEMUBN@DSBNGK7

    kmskdch.aXtsCe`trem 9 XTSUCE@TXEMUK@NHMK7

    // Etrns kspkcjajcncje`ksdch.aHj`nry 9 TX[K7dch.aVnrjty 9 TX[K7

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    42/133

    >38 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    ja(SktCeiiStntk(iUbDjsCei, &dch) 99 6){

    // Qjsunmjznr km krrer ecurrjde.Ik`snokDkKrrer( LktMnstKrrer() )7IkssnlkHkkp(6xAAAAAAAA)7rktur` ANMSK7

    }

    // Kstnhmkckr mes tjkipes mijtks pnrn mns epkrncje`ks dk K/SCEIITJIKE[TS CeiiTjikEuts7

    CeiiTjikEuts.XkndJ`tkrvnmTjikeut 9 INRD\EXD7CeiiTjikEuts.XkndTetnmTjikeutIumtjpmjkr 9 67

    CeiiTjikEuts.XkndTetnmTjikeutCe`stn`t 9 >6667// CHXU:166 ks nprexjindnik`tk > hytk/is. Vnrn `ukstres// prepsjtes pkrijtjrkies u` tjkipe dk kspkrn per cnrctkr// dehmk nm `kcksnrjeCeiiTjikEuts.\rjtkTetnmTjikeutIumtjpmjkr 9 8*CHXU:166/dch.HnudXntk7CeiiTjikEuts.\rjtkTetnmTjikeutCe`stn`t 9 67

    SktCeiiTjikeuts( iUbDjsCei, &CeiiTjikEuts)7

    rktur` TX[K7}

    Mn j`jcjncj` dk u` pukrte sk bnck mmnin`de n mn au`cj` dk mn NVJ dk \j`-dews SktCeiiStntk. Km prjikr nrluik`te bnck rkakrk`cjn nm pukrte dk ceiu`j-cncje`ks y km sklu`de n u`n kstructurn dk tjpe DCH quk nminck`n mnce`ajlurncj` dkm pukrte. DCH kst dkaj`jde k` wj`dews.b y rkcelk tedes mes

    pnriktres rkmncje`ndes ce` mn ce ajlurncj` dk u` pukrte.

    Sj ehskrvn mn dkaj`jcj` dk mn au`cj` Ce`ajlurnrDjsCei, vkr quk ks `kcksn-rje nsjl`nr vnmerks n mes nrrnys iUwTnhmnHnudjes, iUTnhmnVnrjdndy iUTnhmn-

    HjtsVnrndn ijkihres dk mn cmnsk CCeiiQjkw. Xknmjck kstn nsjl`ncj` k` kmce`structer dk su cmnsk, ceie sk j`djcn n ce`tj`uncj`?

    CCeiiQjkw??CCeiiQjkw()? CAeriQjkw(CCeiiQjkw??JDD)

    {iUwTnhmnHnudjesW6Y 9 CHXU>>67iUwTnhmnHnudjesW>Y 9 CHXU3667iUwTnhmnHnudjesW8Y 9 CHXU1667iUwTnhmnHnudjesW3Y 9 CHXU>8667iUwTnhmnHnudjesW4Y 9 CHXU84667

    iUwTnhmnHnudjesW;Y 9 CHXU42667iUwTnhmnHnudjesW1Y 9 CHXU:1667iUwTnhmnHnudjesW44667iUwTnhmnHnudjesW2Y 9 CHXU>:8667

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    43/133

    CNVT[ME 3? CEI[@JCNCJE@KS >33

    iUwTnhmnHnudjesW:Y 9 CHXU324667iUwTnhmnHnudjesW>6Y 9 CHXU;16667iUwTnhmnHnudjesW>>Y 9 CHXU>826667

    iUwTnhmnHnudjesW>8Y 9 CHXU8;16667

    iUTnhmnVnrjdndW6Y 9 @EVNXJTZ7iUTnhmnVnrjdndW>Y 9 KQK@VNXJTZ7iUTnhmnVnrjdndW8Y 9 EDDVNXJTZ7iUTnhmnVnrjdndW3Y 9 INXGVNXJTZ7iUTnhmnVnrjdndW4Y 9 SVNCKVNXJTZ7

    iUTnhmnHjtsVnrndnW6Y 9 E@KSTEVHJT7iUTnhmnHjtsVnrndnW>Y 9 E@K;STEVHJTS7iUTnhmnHjtsVnrndnW8Y 9 T\ESTEVHJTS7

    //{{NARUDNTNUJ@JT(CCeiiQjkw)iUrx 9 UT("")7iUtx 9 UT("")7//}}NARUDNTNUJ@JT// TEDE? ndd ce`structje` cedk bkrkiUbDjsCei 9 @[MM7iUpBjmeKv 9 @[MM7

    }

    Aj`nmik`tk bkies kstnhmkcjde mes tjkipes mijtk j`vecn`de n mn au`cj` Skt-

    CeiiTjikeuts. Km prjikr nrluik`te bnck rkakrk`cjn nm pukrte dk ceiu`jcncje-`ks y km sklu`de n u`n kstructurn CEIITJIKE[TSquk nminck`n mes tjkipesmijtks. Km sjl`jajcnde dk cndn u`e dk kstes ijkihres sk kxpe`k n ce`tj`uncj`.

    XkndJ`tkrvnmTjikeut kspkcjajcn km tjkipe ixjie, k` ijmjsklu`des, qukpukdk trn`scurrjr k`trk mn mmklndn dk des cnrnctkrks k` mn m`kn dk ceiu`jcncje`ks.Durn`tk u`n epkrncj` XkndAjmk, km mnpse dk tjkipe kipjkzn cun`de sk rkcjhk km

    prjikr cnrctkr. Sj km j`tkrvnme dk tjkipe k`trk mn mmklndn dk des cnrnctkrks cun-mksqujkrn kxckdk kstn cn`tjdnd, mn epkrncj` XkndAjmksk dn per aj`nmjzndn dkvem-

    vjk`de cunmqujkr cnrctkr quk bnyn k` mn cemn dk k`trndn. [` vnmer ckre j`djcn quk`e sk usn` tjkipes mijtks.

    [` vnmer INRD\EXD, ceihj`nde ce` vnmerks ckre pnrn mes ijkihres Xk-ndTetnmTjikeutCe`stn`ty XkndTetnmTjikeutIumtjpmjkr, kspkcjajcn quk mn epkrn-cj` dk mkcturn tjk`k quk rkter`nr j`ikdjntnik`tk ce` mes cnrnctkrks quk yn sk bn`rkcjhjde, nu` cun`de `e sk bnyn rkcjhjde `j`l` cnrctkr.

    XkndTetnmTjikeutIumtjpmjkrkspkcjajcn km iumtjpmjcnder, k` ijmjsklu`des, utj-mjznde pnrn cnmcumnr km tjkipe mijtk tetnm pnrn mns epkrncje`ks dk mkcturn. Vnrn cn-

    dn epkrncj` dk mkcturn, kstk vnmer ks iumtjpmjcnde per km `ikre dk hytks quk skqujkrk` mkkr.

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    44/133

    >34 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    XkndTetnmTjikeutCe`stn`tkspkcjajcn mn ce`stn`tk, k` ijmjsklu`des, utjmjzndnpnrn cnmcumnr km tjkipe mijtk tetnm pnrn mns epkrncje`ks dk mkcturn. Vnrn cndn epk-rncj` dk mkcturn, kstk vnmer sk nlrkln nm preducte dkXkndTetnmTjikeutIumtjpmjkr

    per km `ikre dk hytks semjcjtndes. [` vnmer ckre pnrn XkndTetnmTjikeutIumtj-pmjkry XkndTetnmTjikeutCe`stn`tj`djcn` quk km tjkipe mijtk tetnm `e sk utjmj-znr pnrn epkrncje`ks dk mkcturn.

    \rjtkTetnmTjikeutIumtjpmjkr kspkcjajcn km iumtjpmjcnder, k` ijmjsklu`des,utjmjznde pnrn cnmcumnr km tjkipe mijtk tetnm pnrn mns epkrncje`ks dk kscrjturn. Vnrncndn epkrncj` dk kscrjturn, kstk vnmer ks iumtjpmjcnde per km `ikre dk hytks quksk qujkrk` kscrjhjr.

    \rjtkTetnmTjikeutCe`stn`tkspkcjajcn mn ce`stn`tk, k` ijmjsklu`des, utjmjzn-dn pnrn cnmcumnr km tjkipe mijtk tetnm pnrn epkrncje`ks dk kscrjturn. Vnrn cndnepkrncj` dk kscrjturn, kstk vnmer sk nlrkln nm preducte dk \rjtkTetnmTjikeutIum-tjpmjkrper km `ikre dk hytks kscrjtes. [` vnmer ckre pnrn \rjtkTetnmTjikeutIum-tjpmjkr y \rjtkTetnmTjikeutCe`stn`t j`djcn quk km tjkipe mijtk tetnm `e skutjmjznr pnrn epkrncje`ks dk kscrjturn.

    Sj u`n npmjcncj` pe`kXkndJ`tkrvnmTjikeuty XkndTetnmTjikeutIumtjpmjkrnINRD\EXD yXkndTetnmTjikeutCe`stn`tn u` vnmer inyer quk ckre y ik`erquk INRD\EXD, cun`de mn au`cj` XkndAjmkskn j`vecndn, pukdk ecurrjr quk?

    Sj bny cnrnctkrks k` mn cemn dk k`trndn, XkndAjmkrkter`n j`ikdjntnik`tk ce`mes cnrnctkrks dk mn cemn.

    Sj `e bny cnrnctkrks k` mn cemn dk k`trndn, XkndAjmkkspkrn bnstn quk mmkluku` cnrctkr y k`te`cks rkter`n j`ikdjntnik`tk.

    Sj `j`l` cnrctkr mmkln dk`tre dkm tjkipe kspkcjajcnde per XkndTetnmTjik-eutCe`stn`t, XkndAjmkrkter`nr pnsnde km tjkipe mijtk.

    Ce`tremnr kvk`tes

    Qjies quk mn au`cj`KstnhmkckrCe`kxje`, dkspus quk nhrk km pukrte dk ceiu`j-cncje`ks, mn`zn u` bjme Ce`tremnrKvk`tes. Km bjme ce`tremnr mes kvk`tes quk ecu-rrk` sehrk km pukrte j`vecn`de n mn au`cj` \njtCeiiKvk`t. Kstn au`cj`j`aerin dkm kvk`te ecurrjde sehrk km djspesjtjve dk ceiu`jcncje`ks n trnvs dk susklu`de nrluik`te. Mes kvk`tes n ce`tremnr aukre` kstnhmkcjdes per mn au`cj`SktCeiiInsg. Tnihj` pukdk utjmjznr LktCeiiInsg pnrn vkr mes kvk`tesquk aukre` kstnhmkcjdes.

    D\EXD dwInscKvt7EQKXMNVVKD sEvkr 9 {6, 6, 6, 6, 6}7

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    45/133

    CNVT[ME 3? CEI[@JCNCJE@KS >3;

    sEvkr.bKvk`t 9 CrkntkKvk`t( @[MM, // sj` sklurjdndTX[K, // j`jcjncj` in`unm

    ANMSK, // j`jcjnmik`tk ecupnde@[MM )7 // sj` `eihrk

    // ...\njtCeiiKvk`t( iUbDjsCei, &dwInscKvt, &sEvkr )7// ...

    Sj u` preckse j`tk`tn cnihjnr mn iscnrn dk kvk`tes dkm djspesjtjve utjmjzn`deSktCeiiInsgijk`trns u`n epkrncj` \njtCeiiKvk`tkst k` curse, \njt-CeiiKvk`trkter`n j`ikdjntnik`tk y mn vnrjnhmk dwInscKvtks pukstn n 6.

    Sj iUbDjsCei`e sk nhrjkrn ce` AJMKUAMNLUEQKXMNVVKD, \njtCei-iKvk`t`e rkter`n bnstn quk ecurrn u`e dk mes kvk`tes kspkcjajcndes, e u` krrer.

    Sj iUbDjsCeisk nhrk ce` AJMKUAMNLUEQKXMNVVKD, km pnriktre tkrck-re dk \njtCeiiKvk`t `e dkhk skr @[MM. Dkhk npu`tnr n u`n kstructurnEQKXMNVVKDvmjdn quk ce`tk`ln u` bn`dmkn u` kvk`te ce` j`jcjncj` in-`unm. Sj aukrn @[MM, mn au`cj` pukdk j`aerinr j`cerrkctnik`tk dk quk mn epkrn-cj` kst aj`nmjzndn.

    K` kstk mtjie cnse, sj u`n epkrncj` dk K/S semnpndn `e pukdk ceipmktnrsk

    j`ikdjntnik`tk, mn au`cj` \njtCeiiKvk`tdkvukmvk ANMSKy mn au`cj` Lk-tMnstKrrerdkvukmvkKXXEXUJEUVK@DJ@L, j`djcn`de quk mn epkrncj` sk kstkokcutn`de k` sklu`de pmn`e. Cun`de kste ecurrk, km sjstkin pe`k km ehokte rkak-rk`cjnde per km ijkihre bKvk`tdk mn kstructurn EQKXMNVVKDk` kstnde ecu-

    pnde n`tks dk quk \njtCeiiKvk`t rkter`k. Cun`de pestkrjerik`tk ecurrn u`kvk`te dk mes kspkcjajcndes e u` krrer, km sjstkin mjhkrnr djcbe ehokte. Km precksequk mmnin pukdk utjmjznr u`n dk mns au`cje`ks dk kspkrn (\njtAerSj`lmkEhokct,\njtAerIumtjpmkEhokcts, ktc.) pnrn dktkrij`nr km kstnde dkm ehokte kvk`te ydkspus j`vecnr n LktEvkrmnppkdXksumt pnrn dktkrij`nr mes rksumtndes dk mn

    epkrncj` \njtCeiiKvk`t. LktEvkrmnppkdXksumtj`aerin dkm xjte e arncnsedk mn epkrncj`, y mn vnrjnhmk dwInscKvtj`djcn km kvk`te quk ecurrj.

    [J@T Ce`tremnrKvk`tes(MVQEJD p){D\EXD dwInscKvt7CCeiiQjkw *ce`st pQjkw 9 (CCeiiQjkw *)p7EQKXMNVVKD sEvkr 9 {6, 6, 6, 6, 6}7

    // Crknr u` kvk`te dk K/S utjmjznde pnrn mkcturns semnpndnssEvkr.bKvk`t 9 CrkntkKvk`t( @[MM, // sj` sklurjdnd

    TX[K, // j`jcjncj` in`unmANMSK, // j`jcjnmik`tk ecupnde@[MM )7 // sj` `eihrk

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    46/133

    >31 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    ja (sEvkr.bKvk`t 99 @[MM){NaxIkssnlkHex( "Anmme nm crknr km kvk`te pnrn km bjme",

    IHUEG | IHUJCE@KRCMNINTJE@ )7rktur` 67

    }

    // Xkstnhmkckr mes kvk`tes per sj buhjkrn` cnihjndeja (!SktCeiiInsg( pQjkw-0iUbDjsCei, KQUXRCBNX | KQUTRKIVTZ |

    KQUXR26A[MM | KQUKXX ))rktur` 67

    wbjmk ( pQjkw-0iUCe`kxje`Kstnhmkcjdn ){

    dwInscKvt 9 67\njtCeiiKvk`t( pQjkw-0iUbDjsCei, &dwInscKvt, &sEvkr )7ja ((dwInscKvt & KQUXRCBNX) 99 KQUXRCBNX)??VestIkssnlk(pQjkw-0iUb\`d, \IUKQK@TEUCEI, KQUXRCBNX, 6)7

    kmsk ja ((dwInscKvt & KQUTRKIVTZ) 99 KQUTRKIVTZ)??VestIkssnlk(pQjkw-0iUb\`d, \IUKQK@TEUCEI, KQUTRKIVTZ, 6)7

    kmsk ja ((dwInscKvt & KQUXR26A[MM) 99 KQUXR26A[MM)??VestIkssnlk(pQjkw-0iUb\`d, \IUKQK@TEUCEI, KQUXR26A[MM, 6)7

    kmsk ja ((dwInscKvt & KQUKXX) 99 KQUKXX)??VestIkssnlk(pQjkw-0iUb\`d, \IUKQK@TEUCEI, KQUKXX, 6)7

    }

    pQjkw-0iUhBjmeNctjve 9 ANMSK7// Mjhkrnr km in`jpumnder dkm kvk`teCmeskBn`dmk( sEvkr.bKvk`t )7rktur` >7

    }

    Ehskrvk quk cun`de ecurrk u` kvk`te sehrk km djspesjtjve dk ceiu`jcncje`ks,km bjme skcu`dnrje sk me `etjajcn nm bjme prj`cjpnm (n mn npmjcncj`) k`vj`demk u`ik`snok \IUKQK@TEUCEI. Kstk ik`snok auk dkaj`jde n`tkrjerik`tk k` km aj-cbkre CeiiQjkw.b. Mn j`aerincj` quk nceipnn n djcbe ik`snok pkrijtk ce-

    `eckr n mn npmjcncj` cum auk km kvk`te ecurrjde. Ver me tn`te, me sjlujk`tk ksnndjr djcbe ik`snok nm inpn dk ik`snoks dk mn vjstn. Vnrn kmme, nhrn km ajcbkreCeiiQjkw.cpp, mecnmjck km inpn dk ik`snoks y nndn mn m`kn quk sk iukstrn nce`tj`uncj`?

    HKLJ@UIKSSNLKUINV(CCeiiQjkw, CAeriQjkw)//{{NARUISLUINV(CCeiiQjkw)// ...

    //}}NARUISLUINVE@UIKSSNLK(\IUKQK@TEUCEI, E`Kvk`teCei)

    K@DUIKSSNLKUINV()

    K` km cnptume dk bjmes vjies mns pesjhmks aerins dk ceiu`jcncj` k`trk bjmes.@e ks cerrkcte j`vecnr dksdk u` bjme n u`n au`cj` ijkihre dk u`n cmnsk dk mn

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    47/133

    CNVT[ME 3? CEI[@JCNCJE@KS >3Y7j`t `Hytks7

    // Ik`snoks rkcjhjdes dksdk km bjmeswjtcb (wVnrni){

    cnsk KQUXRCBNX?ja (`Hytks 9 MkkrCnrnctkrksVukrte( HytksMkjdes, HME^[KINR ))E`QjsunmjznrCnrs( HytksMkjdes, `Hytks )7

    hrkng7cnsk KQUTRKIVTZ?// ...hrkng7

    cnsk KQUXR26A[MM?// ...hrkng7

    cnsk KQUKXX?

    // ...hrkng7}rktur` 67

    }

    Qkies quk sj km kvk`te quk sk preduoe aukKQUXRCBNX, mn au`cj` E`Kvk`-teCeij`vecn prjikre n mn au`cj`MkkrCnrnctkrksVukrtepnrn mkkr mes cnrnctkrksrkcjhjdes y dkspus n E`QjsunmjznrCnrspnrn nndjr djcbn j`aerincj` n mn cnondk tkxte rkakrk`cjndn per iUrxdk mn j`tkranz dk usunrje.

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    48/133

    >32 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    Au`cj` MkkrCnrnctkrksVukrte

    Mn au`cj` MkkrCnrnctkrksVukrte mkk u` hmequk dkm pukrte CEI y me nminck`nk` u` nrrny. Km prjikr pnriktre ks km nrrny de`dk sk nminck`nr` mes hytks mkdesy km sklu`de ks km `ikre ixjie dk hytks quk sk vn` n mkkr.

    j`t MkkrCnrnctkrksVukrte(HZTK *pHytksMkjdes, j`t HmequkInx )7

    Dkaj`n mn ce`stn`tkHME^[KINRk` km ajcbkre CeiiQjkw.cpp, ns?

    #dkaj`k HME^[KINR 26

    Mn au`cj` MkkrCnrnctkrksVukrte mkkr ceie ixjie HME^[KINRcnrnc-tkrks. Vnrn kmme j`vecnr n mn au`cj` XkndAjmk.

    hMkkr 9 XkndAjmk( iUbDjsCei, pHytksMkjdes, dw@uiHytks,&dw@uiHytks, &iUsEvkrXknd )7

    pHytksMkjdesWdw@uiHytksY 9 67 // aj`nmjznr ce` km cnrctkr `ume

    Mn au`cj` XkndAjmk mkk dw@uiHytkscnrnctkrks dkm djspesjtjve dk ceiu`j-cncje`ks rkakrk`cjnde per iUbDjsCeiy mes nminck`n k` km nrrnypHytksMkjdes.

    Sj iUbDjsCeisk nhrj ce` AJMKUAMNLUEQKXMNVVKD, km mtjie pnrik-tre dk XkndAjmk`e dkhk skr @[MM7 dkhk npu`tnr n u`n kstructurn EQKXMNV-VKDvmjdn quk ce`tk`ln u` bn`dmkn u` kvk`te ce` j`jcjncj` in`unm. K` kstkcnse, XkndAjmkpukdk rkter`nr n`tks dk quk mn epkrncj` dk mkcturn sk bnyn cei-

    pmktnde, k` cuye cnse dkvemvkr ANMSK y mn au`cj` LktMnstKrrerKXXEXUJEUVK@DJ@L. Kste pkrijtk ce`tj`unr mn kokcucj` dkm preckse quk bjzemn mmnindn ijk`trns mn epkrncj` dk mkcturn aj`nmjzn. Cun`de mn epkrncj` aj`nmjzn,km kvk`te kspkcjajcnde k` mn kstructurn EQKXMNVVKD, quk kst ecupnde, sk pe-`k k` km kstnde mjhrk. Vnrn ehtk`kr j`aerincj` dkm xjte e arncnse dk mn epkrncj`,

    pedkies j`vecnr n mn au`cj` LktEvkrmnppkdXksumt7 sj kstn au`cj` dkvukmvk

    ckre sjl`jajcn quk mn epkrncj` `e sk bn ceipmktnde e quk bn arncnse. Vnrn ehtk`krj`aerincj` dk me ecurrjde, pedkies j`vecnr n mn au`cj` LktMnstKrrer.

    Sj km mtjie pnriktre dk XkndAjmkaukrn @[MM, mn au`cj` pukdk j`aerinrj`cerrkctnik`tk dk quk mn epkrncj` kst aj`nmjzndn.

    Mn j`aerincj` ehtk`jdn n trnvs dk mn au`cj` LktEvkrmnppkdXksumt ce-rrkspe`dk n mn mtjin epkrncj` semnpndn sehrk km djspesjtjve kspkcjajcnde, pnrn mncunm auk prepercje`ndn mn kstructurn EQKXMNVVKDkspkcjajcndn, y pnrn mn quk

    mes rksumtndes dk mn epkrncj` kstnhn` pk`djk`tks.ja (!hMkkr){

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    49/133

    CNVT[ME 3? CEI[@JCNCJE@KS >3:

    ja (LktMnstKrrer() 99 KXXEXUJEUVK@DJ@L){wbjmk(!LktEvkrmnppkdXksumt( iUbDjsCei, &iUsEvkrXknd,

    &dw@uiHytks, ANMSK )){dwKrrer 9 LktMnstKrrer()7ja(dwKrrer 99 KXXEXUJEUJ@CEIVMKTK)// ...

    }

    Sj mn au`cj` quk j`jcjn mn epkrncj` dkvukmvk ANMSKy LktMnstKrrerdk-vukmvk KXXEXUJEUVK@DJ@L, ks perquk ksn epkrncj` qukdn pk`djk`tk. Cun`-de u`n epkrncj` dk K/S kst pk`djk`tk, mn au`cj` quk j`jcj mn epkrncj` pe`k km

    kvk`te rkakrk`cjnde per km ijkihre bKvk`tdk mn kstructurn EQKXMNVVKDk` kmkstnde ecupnde. Z cun`de mn epkrncj` pk`djk`tk aj`nmjzn, km sjstkin pe`k km eh-okte kvk`te k` km kstnde mjhrk.

    Sj km mtjie pnriktre dk LktEvkrmnppkdXksumtks TX[K, mn au`cj` `e rk-ter`n bnstn quk mn epkrncj` pk`djk`tk aj`nmjck. Tnihj`, sj pestkrjerik`tk ecurrku` kvk`te dk mes kspkcjajcndes e u` krrer, km sjstkin mjhkrnr km ehokte kvk`te. Sjks ANMSKy mn epkrncj` kst tednvn pk`djk`tk, mn au`cj` dkvukmvk ANMSKyLktMnstKrrerdkvukmvk KXXEXUJEUJ@CEIVMKTK.

    j`t CCeiiQjkw??MkkrCnrnctkrksVukrte(HZTK *pHytksMkjdes, j`t Hmequk-Inx){HEEM hMkkr7CEISTNT KstndeCei7D\EXD dwCedsKrrer7D\EXD dw@uiHytks7D\EXD dwKrrer7cbnr szKrrerW>6Y7

    // Mkkr cndn vkz ceie ixjie HmequkInx cnrnctkrks

    CmknrCeiiKrrer( iUbDjsCei, &dwCedsKrrer, &KstndeCei )7dw@uiHytks 9 ij`( (D\EXD)HmequkInx, KstndeCei.chJ`^uk )7

    ja (dw@uiHytks 0 6){hMkkr 9 XkndAjmk( iUbDjsCei, pHytksMkjdes, dw@uiHytks,

    &dw@uiHytks, &iUsEvkrXknd )7pHytksMkjdesWdw@uiHytksY 9 67 // aj`nmjznr ce` km cnrctkr `ume

    ja (!hMkkr){

    ja (LktMnstKrrer() 99 KXXEXUJEUVK@DJ@L){// Tk`kies quk kspkrnr n quk mn mkcturn sk ceipmktk. Kstn

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    50/133

    >46 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    // au`cj` skr j`tkrruipjdn cun`de trn`scurrn u` tjkipe// CeiiTjikEuts.XkndTetnmTjikeutCe`stn`t.

    // Cbkquknr krrerks k` km pukrtewbjmk(!LktEvkrmnppkdXksumt( iUbDjsCei,

    &iUsEvkrXknd, &dw@uiHytks, ANMSK )){dwKrrer 9 LktMnstKrrer()7// Sj `e tkrij`, dwKrrer vnmk KXXEXUJEUJ@CEIVMKTKja(dwKrrer 99 KXXEXUJEUJ@CEIVMKTK)ce`tj`uk7

    kmsk{// Ecurrj u` krrer, j`tk`tnr rkcupkrnrme

    Ik`snokDkKrrer( dwKrrer )7CmknrCeiiKrrer( iUbDjsCei, &dwCedsKrrer, &KstndeCei )7ja ( dwCedsKrrer 0 6 ){wsprj`ta( szKrrer, "Cei? =CK-%u0", dwCedsKrrer )7// Mes krrerks JK se` = 6 (wj`hnsk.b)NaxIkssnlkHex( szKrrer, IHUEG | IHUJCE@KRCMNINTJE@ )7

    }hrkng7

    }} // aj` wbjmk

    }kmsk // krrer djstj`te dk KXXEXUJEUVK@DJ@L{dw@uiHytks 9 67CmknrCeiiKrrer( iUbDjsCei, &dwCedsKrrer, &KstndeCei )7ja ( dwCedsKrrer 0 6 ){wsprj`ta( szKrrer, "Cei? =CK-%u0", dwCedsKrrer )7NaxIkssnlkHex( szKrrer, IHUEG | IHUJCE@KRCMNINTJE@ )7

    }}

    }}rktur` ( dw@uiHytks )7

    }

    Mn au`cj` CmknrCeiiKrrerehtjk`k j`aerincj` sehrk km krrer dk ceiu`j-cncje`ks ecurrjde y sehrk km kstnde dkm djspesjtjve dk ceiu`jcncje`ks. Nsjijsie,dksnctjvn cunmqujkr j`djcnder dk krrer quk bnyn sjde nctjvnde pnrn bnhjmjtnr epkrn-cje`ks K/S ndjcje`nmks.

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    51/133

    CNVT[ME 3? CEI[@JCNCJE@KS >4>

    Au`cj` KscrjhjrCnrsVukrte

    Mn au`cj` KscrjhjrCnrsVukrtekscrjhk u` hmequk k` km pukrte CEI preckdk`tkdk u` nrrny pnsnde ceie pnriktre. Km prjikr pnriktre ks km nrrny de`dk sk nm-inck`nr` mes hytks mkdes y km sklu`de ks km `ikre dk hytks quk sk qujkrk` ks-crjhjr. Mns kxpmjcncje`ks ce` rkspkcte n nmlu`ns dk mns au`cje`ks utjmjzndns yn bn`sjde dkscrjtns k` npnrtndes n`tkrjerks.

    HEEM CCeiiQjkw??KscrjhjrCnrsVukrte(HZTK *pHytksNKscrjhjr, D\EXD dwHytks){CEISTNT KstndeCei7HEEM hKscrjhjr7D\EXD dw@uiHytks7

    D\EXD dwCedsKrrer7D\EXD dwKrrer7D\EXD dwHytksK`vjndes967cbnr szKrrerW>82Y7

    hKscrjhjr 9 \rjtkAjmk( iUbDjsCei, pHytksNKscrjhjr, dwHytks,&dw@uiHytks, &iUsEvkr\rjtk )7

    // @erinmik`tk km cdjle sjlujk`tk `e sk kokcutnr perquk// km drjvkr cncbkn mns epkrncje`ks dk kscrjturn. Ver me// tn`te, pkqukns pktjcje`ks dk K/S (bnstn nmlu`es cjk`tes

    // dk hytks) skr` erinmik`tk nckptndns j`ikdjntnik`tk// y \rjtkAjmk dkvemvkr TX[K nu`quk km pukrte dk// ceiu`jcncje`ks pkrijtn epkrncje`ks semnpndns.

    ja (!hKscrjhjr){ja( LktMnstKrrer() 99 KXXEXUJEUVK@DJ@L ){// Dkhkies kspkrnr n quk mn epkrncj` dk kscrjturn tkrij`k// pnrn ce`eckr km xjte e `e dk mn ijsin.

    // Vedrn skr hk`kajcjese cemecnr mn epkrncj` dk kscrjturn// k` u` bjme skpnrnde pnrn quk u` hmequke durn`tk mn// rknmjzncj` dk djcbn epkrncj` e nakctk klntjvnik`tk// mn sk`sjhjmjdnd dk mn j`tkranz dk usunrje.

    // Sj mn epkrncj` dk kscrjturn tnrdn dkinsjnde k` aj`nmjznr,// kstn au`cj` skr j`tkrruipjdn cun`de trn`scurrn u` tjkipe// CeiiTjikEuts.\rjtkTetnmTjikeutIumtjpmjkr. Kstk cdjle tein// `etn dk mn j`tkrrupcj` pkre `e rkj`tk`tn mn kscrjturn.

    wbjmk(!LktEvkrmnppkdXksumt( iUbDjsCei,&iUsEvkr\rjtk, &dw@uiHytks, ANMSK ))

    {

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    52/133

    >48 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    dwKrrer 9 LktMnstKrrer()7// Sj `e tkrij`, dwKrrer vnmk KXXEXUJEUJ@CEIVMKTKja(dwKrrer 99 KXXEXUJEUJ@CEIVMKTK)

    {dwHytksK`vjndes +9 dw@uiHytks7ce`tj`uk7

    }kmsk{// ecurrj u` krrer, j`tk`tnr rkcupkrnrmeIk`snokDkKrrer( dwKrrer )7CmknrCeiiKrrer( iUbDjsCei, &dwCedsKrrer, &KstndeCei )7ja ( dwCedsKrrer 0 6 ){

    wsprj`ta( szKrrer, "Cei? =CK-%u0", dwCedsKrrer )7// Mes krrerks JK se` = 6 (wj`hnsk.b)NaxIkssnlkHex( szKrrer, IHUEG | IHUJCE@KRCMNINTJE@ )7

    }hrkng7

    }}dwHytksK`vjndes +9 dw@uiHytks7ja( dwHytksK`vjndes !9 dwHytks )wsprj`ta(szKrrer,"]`Vrehnhmkik`tk sk bn sehrkpnsnde km "

    "tjkipe mijtk.]`Hytks k`vjndes %md", dwHytksK`vjndes)7

    kmskwsprj`ta(szKrrer,"]`%md hytks kscrjtes", dwHytksK`vjndes)7}kmsk // krrer djstj`te dk KXXEXUJEUVK@DJ@L{CmknrCeiiKrrer( iUbDjsCei, &dwCedsKrrer, &KstndeCei )7ja ( dwCedsKrrer 0 6 ){wsprj`ta( szKrrer, "Cei? =CK-%u0", dwCedsKrrer )7NaxIkssnlkHex( szKrrer, IHUEG | IHUJCE@KRCMNINTJE@ )7

    }

    rktur` ANMSK7}}rktur` TX[K7

    }

    Au`cj` CertnrCe`kxje`

    Mn au`cj` CertnrCe`kxje`cjkrrn km pukrte dk ceiu`jcncje`ks. Vnrn kmme, pe`k mnvnrjnhmk iUCe`kxje`Kstnhmkcjdnn vnmer ANMSKpnrn quk km bjme Ce`tremnrKvk`-

    tesaj`nmjck, j`bnhjmjtn mes kvk`tes, dksnctjvn mn m`kn DTX, tkrij`n mns epkrncje`ksdk K/S, mjipjn mns cemns dk rkckpcj` y dk trn`sijsj`, y cjkrrn km pukrte dk ceiu-`jcncje`ks.

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    53/133

    CNVT[ME 3? CEI[@JCNCJE@KS >43

    HEEM CCeiiQjkw??CertnrCe`kxje`(){iUCe`kxje`Kstnhmkcjdn 9 ANMSK7 // aj`nmjzn km bjme

    // J`bnhjmjtnr tedes mes kvk`tesSktCeiiInsg( iUbDjsCei, 6 )7

    // Kspkrnr bnstn quk km bjme aj`nmjckwbjmk( iUhBjmeNctjve )7

    // Dksnctjvnr DTXKscnpkCeiiAu`ctje`( iUbDjsCei, CMXDTX )7

    // Tkrij`nr mns epkrncje`ks dk mkcturn y kscrjturn pk`djk`tks

    // y mjipjnr mns cemns Xx y TxVurlkCeii( iUbDjsCei, V[XLKUTRNHEXT | V[XLKUXRNHEXT |V[XLKUTRCMKNX | V[XLKUXRCMKNX )7

    CmeskBn`dmk( iUbDjsCei )7iUbDjsCei 9 @[MM7

    rktur` TX[K7}

    J@TKXAN_ DKM [S[NXJE

    Cun`de sk kokcutk mn npmjcncj`, u`n dk mns prjikrns tnrkns quk bny quk rknmjznr ksmkkr mn ce`ajlurncj` nminck`ndn k` km rkljstre dk \j`dews. Kstk preckse me rkn-mjznrkies dksdk mn au`cj` E`J`jtjnm[pdntkdk mn cmnsk CCeiiQjkw.

    vejd CCeiiQjkw??E`J`jtjnm[pdntk(){CAeriQjkw??E`J`jtjnm[pdntk()7

    // Noustnr km tnine dk mn vk`tn`n inrce n mn vjstnXksjzkVnrk`tTeAjt( ANMSK )7

    // J`jcjnr km pukrte y mes ce`tremks dk mn J[[pdntkDntn(ANMSK)7iUhete`K`vjnr.K`nhmk\j`dew(ANMSK)7J`jcjnr()7 // ce`ajlurncj` j`jcjnm dkm pukrte CEI

    }

    Nsjijsie, mn au`cj` E`J`jtjnm[pdntk, ndkis dk noustnr km inrce dk mnvk`tn`n nm tnine dk mn vjstn, j`bnhjmjtn km het`K`vjnr.

    Cun`de sk kstnhmkck u`n ce`kxj` k`trk des kqujpes, prkvjnik`tk bny qukkspkcjajcnr mes sjlujk`tks pnriktres? pukrte (CEI>, CEI8, CEI3, CEI4),

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    54/133

    >44 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    hnudjes(>>6, 366, 166, >866, 8466, 4266, :166, ...),pnrjdnd(pnr, jipnr, `j`lu-`n), hjts dk dntes(`erinmik`tk < u 2 hjts per cnrctkr), hjts dk pnrndn(> e 8) yce`trem dk amuoe(Re`/Reaa, bnrdwnrk, `j`lu`n).

    Vnrn kstnhmkckr mes pnriktres n`tkrjerik`tk kspkcjajcndes mn npmjcncj` pre-percje`n mn erdk` Vnriktres CEI. Cun`de km usunrje kokcutk kstn erdk` sk vj-sunmjznr mn cnon dk djmele Ce`ajlurncj` quk mk pkrijtjr kstnhmkckr mes

    pnriktres ce` mes quk sk rknmjznr` mns ceiu`jcncje`ks. Mn rkspukstn n kstn nc-cj` dkm usunrje skr mn au`cj` E`Ce`ajlVnrni. Kokcutk Cmnss\jznrd, nndn kstnau`cj` y kdtkmn ceie sk j`djcn n ce`tj`uncj`?

    vejd CCeiiQjkw??E`Ce`ajlVnrni()

    { // Crkn km ehokte dk djmeleCVnrniCei dml7

    // Nctunmjznr mes dntes dkm djmeledml.iU`Vukrte 9 iUj`dVukrte7dml.iU`Hnudjes 9 iUj`dHnudjes7dml.iU`Vnrjdnd 9 iUj`dVnrjdnd7dml.iU`HjtsCnr 9 iUj`dHjtsCnr7dml.iU`HjtsVnrndn 9 iUj`dHjtsVnrndn7dml.iU`Ce`tremAmuoe 9 iUj`dCe`tremAmuoe7

    // Iestrnr km cundre dk djmele y vkrjajcnr km het` pumsndeja (dml.DeIednm() !9 JDEG) rktur`7

    // Nctunmjznr mn ce`ajlurncj`iUj`dVukrte 9 dml.iU`Vukrte7iUj`dHnudjes 9 dml.iU`Hnudjes7iUj`dVnrjdnd 9 dml.iU`Vnrjdnd7iUj`dHjtsCnr 9 dml.iU`HjtsCnr7iUj`dHjtsVnrndn 9 dml.iU`HjtsVnrndn7iUj`dCe`tremAmuoe 9 dml.iU`Ce`tremAmuoe7

    ja( KstnhmkckrCe`kxje`() ){iUCe`kxje`Kstnhmkcjdn 9 TX[K7NaxIkssnlkHex( "Vukrte dk ceiu`jcncje`ks nhjkrte",

    IHUEG | IHUJCE@KRCMNINTJE@ )7iUhete`K`vjnr.K`nhmk\j`dew(TX[K)7

    }}

    [`n vkz vjsunmjzndn mn cnon dk djmele Ce`ajlurncj`, sj km usunrje bnck cmjc

    k` km het` Nckptnr(JDEG) sk nctunmjznr` mes pnriktres dk ce`ajlurncj` ce`mes vnmerks skmkccje`ndes y sk j`vecnr n mn au`cj` KstnhmkckrCe`kxje` pnrnnhrjr km pukrte dk ceiu`jcncje`ks kspkcjajcnde. Sj kstk preckse sk kokcutn sntjsanc-

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    55/133

    CNVT[ME 3? CEI[@JCNCJE@KS >4;

    terjnik`tk, pe`kies mn vnrjnhmk iUCe`kxje`Kstnhmkcjdnn vnmer TX[K, vnrjnhmkquk utjmjznrkies pestkrjerik`tk pnrn jdk`tjajcnr sj km pukrte kst e `e nhjkrte. Kstnvnrjnhmk auk dkcmnrndn n`tkrjerik`tk ceie ijkihre dk mn cmnsk CCeiiQjkw kj`jcjndn k` km ce`structer ce` km vnmer ANMSK.

    Ceie mn au`cj` n`tkrjer bnck rkakrk`cjn n mn cmnsk CVnrniCei, ks `kcksnrjenndjr mn m`kn sjlujk`tk nm ajcbkre CeiiQjkw.cpp.

    #j`cmudk "VnrniCei.b"

    Vnrn `e pkrijtjr iedjajcnr mn ce`ajlurncj` dkm pukrte dk ceiu`jcncje`kscun`de kst nhjkrte, kokcutk Cmnss\jznrd y nndn mn sjlujk`tk au`cj` ijkihre dk

    CCeiiQjkw, ce`tremndern dkm ik`snok [VDNTKUCEIIN@DU[J.vejd CCeiiQjkw??E`[pdntkCe`ajlVnrni(CCid[J* pCid[J){pCid[J-0K`nhmk(!iUCe`kxje`Kstnhmkcjdn)7

    }

    Sj km usunrje bnck cmjc k` km het` Cn`ckmnr(JDCN@CKM) dk mn cnon dk djme-le Ce`ajlurncj`, `e sk rknmjznr `j`lu`n nccj`.

    K` cnihje, sj km usunrje bnck cmjc k` km het` Xkstnurnr(JDCUDKAN[MT) skkstnhmkckr` ceie vnmerks per eijsj` mes mtjies vnmerks quk aukre` nminck`n-des k` km rkljstre dk \j`dews.

    vejd CVnrniCei??E`VerEijsje`(){// Vnriktres per dkakcte dk mn ceiu`jcncj`iU`Vukrte 9 >7 // CEI8iU`Hnudjes 9 17 // :166iU`Vnrjdnd 9 67 // @j`lu`niU`HjtsCnr 9 47 // 2

    iU`HjtsVnrndn 9 67 // >iU`Ce`tremAmuoe 9 >7 // Re`/Reaa

    [pdntkDntn(ANMSK)7 // Xkarkscnr mns mjstns dkspmklnhmks}

    Kokcutk Cmnss\jznrdy vj`cumk mn au`cj` E`VerEijsje`ijkihre dk mn cmnskCVnrniCeinm het`Xkstnurnr.

    Mn erdk`Kstnhmkckrdkm ik` Ce`kxj`tjk`k ceie au`cj` nhrjr km pukrte dk

    ceiu`jcncje`ks ce` mes pnriktres nctunmik`tk skmkccje`ndes. Cun`de km usunrjekokcutk kstn erdk`, ceie rkspukstn skr j`vecndn mn au`cj` E`Ce`kxje`Kstnhmk-ckrijkihre dk mn cmnsk CCeiiQjkw, quk n su vkz j`vecnr n mn au`cj` Kstnhmk-

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    56/133

    >41 QJS[NM C++. VXELXNINCJ@ NQN@_NDN K@ \J@38

    ckrCe`kxje`. Ver me tn`te, kokcutk Cmnss\jznrd, vj`cumk E`Ce`kxje`Kstnhmkckrce` mn erdk`Kstnhmkckry kdtkmn ceie sk j`djcn n ce`tj`uncj`?

    vejd CCeiiQjkw??E`Ce`kxje`Kstnhmkckr(){ja ( KstnhmkckrCe`kxje`() ){[pdntkDntn(TX[K)7iUhete`K`vjnr.K`nhmk\j`dew(TX[K)7[pdntkDntn(ANMSK)7

    }}

    Sj km djspesjtjve dk ceiu`jcncje`ks sk nhrk sntjsancterjnik`tk, mn au`cj`E`Ce`kxje`Kstnhmkckr, ndkis, nctunmjzn mns vnrjnhmks ijkihre iUtxy iUrx mj-lndns ce` mns cnons dk tkxte dk trn`sijsj` y dk rkckpcj`, rkspkctjvnik`tk, ybnhjmjtn km het`K`vjnr.

    Vnrn `e pkrijtjr nhrjr km pukrte dk ceiu`jcncje`ks cun`de yn kst nhjkrte,kokcutk Cmnss\jznrdy nndn mn sjlujk`tk au`cj` ijkihre dk CCeiiQjkw, ce`-tremndern dkm ik`snok [VDNTKUCEIIN@DU[J.

    vejd CCeiiQjkw??E`[pdntkCe`kxje`Kstnhmkckr(CCid[J* pCid[J)

    { pCid[J-0K`nhmk(!iUCe`kxje`Kstnhmkcjdn)7}

    Vnrn ckrrnr km pukrte dk ceiu`jcncje`ks, mn j`tkranz dk mn npmjcncj` preper-cje`n mn erdk` Certnrdkm ik` Ce`kxj`. Vnrn bnckr epkrntjvn kstn erdk`, vj`c-mkmn ce` mn au`cj` E`Ce`kxje`Certnry kdtkmn ns?

    vejd CCeiiQjkw??E`Ce`kxje`Certnr(){Tkrij`nr()7 // lunrdnr mn ce`ajlurncj`CertnrCe`kxje`()7iUhete`K`vjnr.K`nhmk\j`dew(ANMSK)7

    }

    Ehskrvk quk mn au`cj` E`Ce`kxje`Certnrprjikre mmnin n mn au`cj` Tkrij-`nrpnrn lunrdnr mn ce`ajlurncj` nctunm k` km rkljstre dk \j`dews, dkspus j`ve-cn n mn au`cj` CertnrCe`kxje`y aj`nmik`tk j`bnhjmjtn km het`K`vjnr.

    Vnrn `e pkrijtjr ckrrnr km pukrte dk ceiu`jcncje`ks cun`de `e kst nhjkrte,kokcutk Cmnss\jznrdy nndn mn sjlujk`tk au`cj` ijkihre dk CCeiiQjkw, ce`-tremndern dkm ik`snok [VDNTKUCEIIN@DU[J.

    vejd CCeiiQjkw??E`[pdntkCe`kxje`Certnr(CCid[J* pCid[J)

  • 7/23/2019 Ceballos: Visual C++. Programacin avanzada en win32.

    57/133

    CNVT[ME 3? CEI[@JCNCJE@KS >4)7vr 9 KscrjhjrCnrsVukrte(pszHytks, ` )7

    iUtx.XkmknskHuaakr()7// Kmjij`nr mes cnrnctkrks trn`sijtjdesja ( vr ){iUtx 9 ""7[pdntkDntn( ANMSK )7

    }}

    }

    Mn au`