Ldl Md DRUChåo mtrng cåc bqn dén vdi thé' gidi lap trinh thü vi cåa möi trdöng dd hoa Windows.. Quyén såch nåy sé cung cå'p cho cåc lqn nhüng khåi niém vå nhCfng nguyén tic cd bån dé lap
Trang 1Lê Hüu Dat Biên)
Windows
Sách giáo khoa vê trinh Win 32 API
Các vi du chuin Illilc dii vdi tüng cliii dê
Toàn b0 mi nyuín (bing VC++B.O) di
o-Ro
Dây dli vi d!
02 theO
dich vi chav Ilit
Trang 2LAP TRINH WINDOWS
41B L' Thåi T6 - Hå Néi - Tel: 8.241706 - Fax: 9.348283
Chiu tråch nhiem xudt bån: NGUYÉN DiNH THIÉM Chiu tråch nhi?m néi dung: NGUYÉN BÅ NGOC Bién sogn: LÉ HIJU DAT - HỔNG DÜc HÅI
Slta bån in: NGOC AN
Trinh boy bio: HUYNH THÅo
Thvc lién doanh: cong ty TNHH Minh Khai S.G E-mail: mk.book@minhkhai.com.vn - Website: www.minhkhai.com.vn
Tdng phåt hänh
Nhå såch Minh 249 Nguyén Thi Minh Khai - Quan 1 - TP.HCM
DT: (08) 9.250.590 - 9.250.591 - Fax: (08) 9.257.837
Nhä såch Minh Chåu: Nhä 30 - Ngư 22 - T? Quang Btu - Béch Khoa - Hä Nưi
DT: (04) 8.692.785 - Fax: (04) 8.683.995
Ij cåc khu vuc
Nhä såch Huy Hộng: 95 Nüi Trüc - Kim Mä - Ba Dinh - Hä Nưi
DT: (04) 7.365.859
Cty cd phan såch thiét bi trdưng hoc Dä Näng: 78 Bech Däng - Näng
DT: 0511.837100
Nhä såch Chånh Tri: 116A Nguyén Chi Thanh - Dä Näng
DT: 6511.820129
Cty phåt hÅhh éåch Khånh Hưa:
Nhä såch Ponagar: 73 Th6ng Nhå't - Nha Trang - 101ånh Hưa
DT: 058.822636
Siéu thi såch Tån Tién: 11 Lé Thänh Phddng - Nha Trang - Khånh Hưa
DT: 058.827303
Nhä såch Näm Hién: 79/6 XO Viét Nghe Ti h - TP.can Tho
DT: 071 821668
In 500 cuưn (10m dia CD båi tap), khd 21 x 29 cm,
tei Xi nghiQp in Machinco - Sd 21 Büi Thi Xuån, Q 1, TP.HCM
Giå'y chå'p nhan däng kg kop hooch xuå't bån so' 527-2006/CXB/55-116/LDXH
55-116
Mä so' 3-7 - In xong vå nop Idu chiéu thång 1 näm 2007.
Trang 3Ldl Md DRU
Chåo mtrng cåc bqn dén vdi thé' gidi lap trinh thü vi cåa möi trdöng dd hoa Windows Quyén såch nåy sé cung cå'p cho cåc l)qn nhüng khåi niém vå nhCfng nguyén tic cd bån dé lap trinh trén Windows Tru6c hét n6 dånh cho cåc bon bi6t lap trinh C h04c Pascal trong möi trdöng DOS, nay
muön chuy6n sang lap trinh trén Windows N6 cüng thich hqp cho cåc bon dä lap trinh trén
Windows vdi mot ngön ngü trVc quan cao hdn C, nhLf Visual Basic, nay mu6n c6 nhÜng kié'n th(fc
vCfng chic dé lap trinh Win32 API trén Visual Basic hay chuydn qua lap trinh C trén Windows.
Quyén såch nåy cüng dänh cho cåc bon dä tüng lap trinh C trén Windows, mu6n c6 mot "såch
giåo khoa" vé 14p trinh Windows dé tham khåo.
An phÄm trinh båy tubng tan, chi tiét mQi nguyén tic cia viéc lap trinh trong Windows: Tif
nguyén tÅc hoot dong cåa mot chddng trinh trong Windows, thöng qua cd chg cåc thöng diöp, cho
dén cåc nguyén tic lap trinh chuöt, bån phfm, timer, trinh ddn (menu), måy in, NO cüng di såu
våo giao diQn lap trinh db hoa GDI cåa Windows, giüp cåc bqn nÅm vCfng cåc nguyén tåc lap trinh trén cåc dji tuqng bitmap, metafile, font, Cåc bm cüng sé duqc hd6ng dÄn cu thé cåch xåy dl;fng cåc thu vién lién két döng (DLL), cåc nguyén tÅc lip trinh da tuyé'n (multithread).
Tä't cå mä nguön cåa cåc chddng trinh trong néi dung såch déu dä duqc bién dich vå chqy
thü Bqn c6 thé ding mä nguön trong dia di IQm theo såch hay gö Iqi mä ngudn tü såch.
Dü dä cö' gång hé't stc, nhu•ng khöng thd trånh khåi nhÜng khuyé't didm, rä't mong phé
binh qui båu cåa cåc bqn.
MQi g6p Xin güi vé dia chi E-mail sau:
mk.book@minhkhai.com.vn
Chüng töi chän thånh cåm on döng vién vå d6ng göp kién cåa cåc ben ddng nghiép
trong quå trinh bién som såch Xin tå löng biét dn såu säc dén anh Tran Tién Düng dä g6p j vå
bd sung nhiéu chi tiét qui båu cho quydn såch nåy.
MK.PUB
Trang 4MUC LUC
Löl Md I)ÄU
MUC LUC
1.2.1 Lich Sli Clia Windou's
1.3 API vå cåc mö hinh bé nhd
1.4 Chui(jng trinh windows dåu tiön cua l)4n
1.4.1 Mét Illö Ilinh kidu-kS' tv
1.4.2 Chitong trinh Windot('s tu•cmg
11.1 Lich sü tfip ky+
Il 1.1 Bé tiéu chudn MS (Anterican Standards)
11.1.3 ASCII réng
Il 1.4 Cåc tQp Il'S' tv hai byte
ll 1.5 TGI) k)" 11/ Unicode .
11.2 Töp kyl' tv Unicode vå C
11.2.1 Kidli Il'S' ti.t
11.2.2 Clic tv' réng hon
11.2.3 Cåc /lönn thit Vien Unicode
11.2.4 Duy tri niü ngubll duy nhåt
11.3 Tape k)" tv Unicode vä Windows ,
11.3.1 Cåc kidu tögp tin tiéu db (header file) Wilidows., .
11.3.2 St/ gei llål)l Windows
11.3.3 Sit dvng print/ trong Windows
llöun Message Box din/l
17 18 18 18
21 21
'21
.21
22
23
23
24
24 24
25 26 27 27
29
30
11.3.4 Mét
.31
111.1 Cüa sö (Window)
.32
111.1.'2 Chuong trinil HELLOWIN
.37
111.1.3.Dang löp tcindow
.41
111.1.4.Tao ra u'indow
111.1.5 Iliön thi window
Trang 5MUC LVc
111.1.6.
111.1.7.
111.1.8.
111.1.9.
VÖng I(ip thöng .42 TIlli tuc usindou•
Xli IS' cåc t/löng dig)) TIll/c Illi tin ('un thanh
111.1.10 Thöng
111.1.11 Tilöng
V}'M PAINT.
WM DESTROY.
111.2 Nguyén tåc 1ö1) trinh NV indows
111.2.1 Windou•s gei clu/ong Irinll cü(t 13gn
111.2.2 (hic t/löng di('l) eö /lüng (I(.yi t'å k/löng llång dui
111.'2.3 Vüo ru nhanh
CHÜöNG 4 THUC HÅNH VÉ XUÄ'T CYIÜ
IV.I Md d•au.
IV.2 VO Iqi (Paint Repaint).
1}'.2.1 Thöng WM PAINT
IV 2.2 C(ic hinh ch17 Il/lögt l? k/löng /1(21) IQ
IV.3 Gibi thiéu GDI
IV.3.1.
IV.3.2.
IV.3.3.
w.3.4
I)et'ice Context
NIIö111 niöt handle (let'ice context - pliåp 1
C(iu triic t/löng tin paint
N/lün niöt llandle decice context: philtjng• l)/låp 2
IV.3.5.
IV.3.6.
IV.3.7.
IV.3.8.
Chi tiét vé
Chi tié't Tex/
48
.49
.49
50
50
U
u } 21 : •l 51
.51
52
: 53
l 53
54
IV.3.9.Din/l dgng chi?
1%3.10 Köl /1(21) 111Qi did'll lgi
11/.3.11 Tilli luc window SYSMETS l.c
W 3.12 chi
IV.3.13 Kic/l t/1t/Öe tuiilg client
IV.4 C&ic thanh cuOn (Scroll Bars)
IV.4.1 Vüng tfå v/ tri than/l
IV.4.'2 Clic thöng di(p than/l
IV.4.3 Ctlön SYSMETS
v
55
56
.56
57
.62
.62
63
63
64 65
67
11"4.4 Cdu trlic c/ll/(jng trinh c/é'
IV.5 TOO mot thanh cuQn töl hon
IV.5.1 Cåc /ldun 1/1öng tin than/l ('11()11
IV.5.'2 Gibi llan khi cuön
IV.5.3 SYSMETS
IV.5.4 l)/lién l)ån k/löng Sli' (Ivng chuQt.,
71
71
71
73
, 73
80
Trang 6MUC LUC
CHUONG 5 CO BÂN GDI
V.I că•u GDI
v.l.l IS GDI
V.1.2 Ccic GĐI
V 1.3 N1117ng ngll.vôn tÔ GDI (GDI Priłnilices) V.2 Device Context v.2.1 N11(łn Device Context
v.2.2 N11(În tliông tin device context V.2.3 Cilltang DEVCAPSI v.2.4 Kicll tliłlóc Clia tliiÔt bi v.2.5 Tint Iliću vč
v.'2.6 Clic thuÔc tinll device context
v.2.7.Litu device coli CHUONG 6 BÂN PHiM
VI.I CU so vÔ bân phim
VI 1.1 Kli,ông cđn quan Iđlłn din bčlll pliiłn
VI 1.3 I-Iâng (Igi vi?c dÔ1łg bÔ Ilóa
V1.1.4 Pllinł gô k)” ttf gô
VI 2 Thông diëp phim gô VI,2.1 P/liłn gô 11? tliÓng vđt p/linł gô tliông tliltông
VI.'2.2.Tini Iličll łnđ pliiłn do (uirlual key code)
VI.2.3 Tžłn Iliču tliông tili clitîa trong IParałn .ș
VI.2.4 Trętng tildi Ičgt pliiłn(S11ift States)
VI.2.5 Sit dl!lłg tliông di?p p/linł gô
VI.2.6 Nđng câp cllltang trilill SYSMETS Cho phćp sti' dl!lłg phiłn ;,
VI.3 Thông dięp nhân dąng gô
V1.3.1 Bô'll logi tliôlłg diëp k'S' tl!' gô
V1.3.2 Tlit ttf tliông V1.3.3 XI? lj cuc k)” lit diÔu kliiën V1.3.4 Tliông di?p Clia ccîc kJ' ti/ ”c11Ôt” (dead-character) .
V1.4 Thông dięp bân phim vâ tăp hqp k' tg V1.4.2 VCI'II dÔ vâ -rit IS' bčtn pliinł vói liliiëu lłgôn ngł-ł
V1.4.3 T(tp Il„gp kJ' ti/ včt FOIlt V1.4.4 Thë' côll Uliicode tlii sao?
V1.4.5 TrueType f011t tlłay Clio font bitłnap ('Iža 11? tliô)łg V1.5 Con nhăy thay Cho con tro
7 81
81 81 82
82 83 83 84 85
88
91 92 93 95 95 95
96
96
97
97
97
98
101 102
103
103
111
112 112 113 114 115 115
121
122 128 129 135 135
Trang 7VI.5.2 TYPER „
CHUONG 7 CHUOT V11.1 Cd ban vé chuöt
VII.2 Cåc thöng (liép chuét vong client V11.2.1 Mét ri ui IS' chuöpt don giån
1/11.2.2 xti IS pili,n V11.2.3 DoubleClick VII.3 Nhüng thöng diép chuq')t vung Nonclient 1'11.3.1 Thöng flit-Test
V11.3.2 Thöng di('l) Sinh ra tllöng VII.4 Ilit-Testing (xåc (linh Kich) trong chif(jng trinh V11.4.1 Möt du VlI.4.2 Mét chi/ong trinll V11.4.3 Mö phöng chuét t'(jl bitn Philli }'11.4.4 giao liép l)ån phi,n CHECKER
V11.4.5 Sit dung Clic Clia sc)' con (18 Hit-Testing
V11.4.6 Clic s6 con trong CHECKER V11.4.7 Ctta sö' con t'ü bitn philn V11.5 Capture chu0t V11.5.2 Giåi pliåp Capture (chon båt)
LUC 146 148 148 149 149
• 149 158
154 158 158 162 168 168 u : 171
V11.5.3 Chuang trillh BLOKOUT2 ., _ 172
V11.6 . CHUONG 8 BÖ THö1 (TIMER) VIII.I Khåi niQm co bån vé timer
VI 11.2 Thié't lap bé Dinh thdi timer
}'111.2.1 11? thöng bé dillh
174
181 181
181 182 V111.2.2 Thöng di('l) Tinier ditgc Xlt IS' tuttn tv' t'å ddng 182
VI 11.3 Ba phtf(jng phåp sir (lung dinh thöi timer 182
V111.3.1 Plutong pilåp ,nét
V111.3.2 Phuong pilåp hai
V111.3.3 Phuong pliåp ba
183
186 VIII.4 Xäy d!fng chd(jng trinh ddng hd vdi Timer
V111.4.1 Xåy dl/ng clutung trinll (Ibng lid sö' digital
V111.4.2 Xåy dung chitong trinll ddng 11b chi kiln 19
V111.5 SLY dung bQ dinh thöi Timer (16 thöng l)åo cåc trqng thåi 20
CHUONG 9 cÅc CONTROL cÜA SO CON 20
IX.I Md dÅu
Trang 8MUC LUC
IX.2 Ldp button
IX.2.1.
IN 2.2
IX.2.3
IX.2.4
IX.2.5.
IX.2.6.
IX.2.7
IX.2.8
IX.2.9
Tgo ra cåc child window control
Ctia SD con lién lgc t.'åi Clia Clia st; cha lién lac vÖi Clia st; con
Cåc push button
Cåc check Cåc radio button
Cåc group box
Tllay d6i clu7 Clia button C(ic button dttoc Iliön thi (visible) c/10 phép (enabled) IX.2.10 Clic button t'å focus nllöyp
IX.3 Cåc Control vå måu
IX.3.1 Cåc lilüu Il? thö'ng
IX.3.2 Cåc natu button
Ix.3.3 Thöng di?p WM_CTLCOLORBTN
IX.3.4 Ccic button ti/ vé (Owner-Draw)
IX.4 Ldp tinh (Static Class)
IX.5 Ldp thanh IX.5.1 Chuang trinil COLORSI
IX.5.2 Giao cli?n bån Philli tv déng
IX.5.3 Subclassing Cita sö ,
IX.5.4.Tö lnåu nén
IX.5.5 Tö ntåu cåc thanh cuön vå text tinh
IX.6 Ldp soan thåo (The Edit Class) IX.6.1 Ccic kidu lÖp sogn.thåo
IX.6.2 Mä thöng båo Edit Control
IX.6.3 Slt dung cåc Edit Control 0 , IX.6.4 Cäc thöng di?p dén ntét Edit Control ,
IX.7 Ldp Listbox IX.7.1 ccic leié'u List IX.7.2 Dat ccic chuöi våo List Box
IX.7.3 Chen vå Idy cåc IX 7.4 Nh@n cåc tllöng di?p tir List Box
IX 7.5 Mét ltng deng List Box don giån IX.7.6 Li?t ké cåc tüp tin IX.7.7 Möt head cüa Windows CHUONG 10 TRiNH DON vÅ TÅI NGUYÉN
x.l Md X.2 Icon, Cursor, chuöi vå cåc Resource tüy bién
X.2.1 Thé/)1 1114t icon våo nlét cllttcng trirh 206 210 211 '211 212 212 213 213 '213 214 214 215 215 216 217 217 224 225 225 232 233 233 233 234 236 237 237 237 238 238 '239 240 240 241 245 246 251
251
251
251
Trang 9MVC Lt)c
X.2.2 NII(in tnét llandle cua cåc icon
X.2.3 Sti dung cåc icon trong chuong trin/l Ijgn
X.2.4 Sli dung cåc Icon tidy bidn
X.2.5 Cåc Resoutve childl IS'
X.2.6 Cåc resource tü.y
X.3 Trinh don
x.3.1
x.3.2
x.3.3
x.3.4
x.3.5
x.3.6
x.3.7
x.3.8
x.3.9
Cåc kllåi niétn trinll don
Cåu trlic trinh don
Dinh ngllia trill/l don
Tllatn trö trinh don Irong Chuang trinh Clia Bun
Trinh don vå cåc thöng cliép
Mét chuong trinh "I(iu
Qui ltöc trin/l don
Dinll nghia lnét trinh don theo cåc/l phlic
X.3.10 Sit dung trinh don 11? lhöhg
X.3.11 Thay dö'i trinll
X.3.13 Mét cåcll tiép cQn trin/l don kllöng chinh
X.4 Phim tÅt (Keyboard Accelerator)
x.4.1
x 4.2
x.4.3
x.4.5
x.4.6
x.4.7
Tgi sao sti' dung Keyboard Accelerator
Mét sö' qui täc gån keyboard accelerator
Bång Accelerator .l
Ngp bång
Dicli ccic phün NIIGII cåc thöng dipp accelerator „
POPPAD vöi lilét trinh don vå accelerator „
x.4.8 I-Iiéu Il/c cåc Inuc trinh
x.4.9 Xlt IS' cåc tüy ch.Q11 trinh don
CHUONG 11 HOP THOM (DIALOG BOX)
XI.I Khäi niérn cc bån vé hQp thoqi (Dialog
XI.2 I-IQp thoqi dang Modal
Xl.2.2.
Xl.2.3.
xl.2.4
Xl.2.5
Xl.2.6.
Tc,to llép thogi don giån — Tlép thogi 'About'
I-Iép thogi vet two lilttu tonplate c110 1101) thogi T/lli tuc Xlt IS' thöng dipp Clig llép thogi
Ccic bién- tå"u kh(ic llhau Clia 11.01)
Tgo 1110t lhogi• phlic tgp 110/1 :
Xl.2.7 LODI vi?c U'Öi ccic thånh pliün diöu kliié'n trong 1141) Illogi
Niit nlldn OK Cancel
258
2GG
'267
267 267
270 275 276 277
282
285
285
286 291
291
291
292 292 292 293
293 300 301
303 303
303
304 307
308 309
310
312 317 318
Xl.2.8.
Trang 10MUC LUC
Xl.2.9 Trin/l sti dung biö'n toün cuc ,
Din/l diönj dirng (Tab Stop) ph(in Xl.2.11, Vö trong Clia SD ht)p thogi
Xl.2.13 Din/l nghia thånll phån dibtl khiön Clia riéng 13gn
Xl.3 Ilép tho,3i dang Modeless ,
Xl.3.1 St./ khåe nhau gilia Illogi 'nod(tl t'dt Inodeless
Xl.3.2 Cili/ung trinil COLORS nüng C(ip
X1.3 3 Chuang trinll IIEA'('ALC: Clia so' h(t)' 1/10(.ti
X 1.4 (hic hop thoai thong (lung trong Windows (Common l)ialog)
Xl l.l Chltung trin/l POP,AI) nüng Clip
11
319
320
321 321
322
327
327
329 332 338
338
Xl.5 Chuang trinh chi can mot 1011 h 357
CHÜONG 12 CLIPBOARD
Xll.l Md dill
XII.2 Sü (lyng Clipboard (Ion gian
XIl.2.1 Cåc dinh danll d17 li('ll clipboard ehuü)l
X11.2.3 Ch10€Ol text clipboard
X11.2.4 Nil(tn text clipboard
XII.2.5 Md t'å döng clipboarcl
x11.2.6 Clipboard Unicode
X 11.3 SLI dyng Clipboarcl phlTc top Il(jn
-Illiiéu d17
359 359 359
359 360
361
362 363 363
369
370 XIl.3.1 Slt clvng
XlI.3.2E Tri hoün thi/c hi?ll (Delayed Rendering) 371
Xll.3.3 Clic dill" dgng clü' lieu riéng
XII.4 Too mot Clipboard Viewer
XlI.4.1 Chuöi -vich Clipboard
XII.d.2 Clic /lånl l,'öt t/löng di(p Clipboard Vieu'er
XIl.4.3 Mét vi (11! Clipboard Viewer don giån
CHUONG 13 cÅc COMMON CONTROL
XIII.I Gidi thiQu Common Control
X111.2 phién ban DLL
XIII.3 Cåc thöng (liQp Common Control
XIII.4 Cåc I(3p cua sö Common Control
XIII.5 Cåc kiöu Common Control
CHUONG 14 GIAO DIÉN NHIÉU TÅI LIÉU (MDI)
XIV.I Khåi niQm co bån vé MDI
XIV.I.I p/l(in MDI
372 373
373
373 376
379 379
379
380
380
381
383 383 383
Trang 11,WV.1.2 11b MDI
XlV.2 vi (låt.„
Ba trinil XlV2.2 Khm Chuang trinh ,.
XlV.2.3 ra st; con
XlV.2.4 Xli• IS' thöng dlép Clia SD khung
XIV.2.5 Clic SD tåi lieu con
XlV.2.(i Den dep
xv.l Md dåu
XV.2 co in
XV.2.1 In
XV.2.2 Device Context nuiy
XV.2.3 Chu•ong trinil DEVCAPS lgi
XV.2.4 Lbi gei höun
XV.2.5 Kiéln tra kliå nCtng BitBlt
XV.2.6 Chuang trinh in don giån nhdt
XV.3 In dd hoa vå chtr „
xv.3.1 In Bare-Bone
xv.3.2
xv.3.3
xv.3.4 Cüi dot nupt Abort Procedure l,
LUC
401
401
402
400
403 403 403 406 408
420
421
421
423 426
9 427
428
428
xv.3.5 Thénl niét 1101) thogi in „ 431
CHUONG 16 BITMAP
XVI 1 Co bån vé bitmap , j
XVI.2 Cåc kich thudc Bitmap
XVI.'2.1 .
441
XW.2.2 ccic thiÖt bi thégiöi 442
XVI.3 Chuyé'n khöi bit (Bit-Block Transfer)
XVI.3.1 Cllltong trinh' BitBlt
XVI.3.2 Giün (Stretching)
XVI.3.3 Kidu StretchBlt
XVI.3.4 Cåc toåll hgng
XVI.3.5 Bit Mttu
XVI.4 Dji tuqng Bitmap GDI
XVI.4.1 Tao ra DDB
XVI.4.'2 bit bil,nap
XVI.4.3 Device Context bö 11/1ö
444
444
448 450
450
452
453
453
455