Xem mẫu
LEÂ NGOÏC THAÏNH lntmail@yahoo.com
LAÄP TRÌNH WINDOWS VÔÙI MFC Microsoft Visual C++ 6.0
NHAØ XUAÁT BAÛN THOÁNG KEÂ
MUÏC LUÏC
CHÖÔNG 1 : MOÄT SOÁ KHAÙI NIEÄM LAÄP TRÌNH Trang TRONG MOÂI TRÖÔØNG WINDOWS 1
1.1 Chöông trình ( Program ) 1 1.2 ÖÙng duïng ( Application ) 1 1.3 Tieán trình ( Process ) 1 1.4 Tieåu trình (Thread ) 1 1.5 Thoâng ñieäp ( Message ) 2 1.5.1 Nguoàn goác cuûa message 2 1.5.2 Caùc loaïi message 2 1.5.3 Soá hieäu message (Message Indentifier – MessageID) 3 1.5.4 Ñaëc taû message 3
1.6 Cöûa soå giao dieän (window) cuûa öùng duïng 3 1.7 Message queue 5 1.8 Kieán truùc xöû lyù cuûa öùng duïng trong Windows 7 1.9 Resource cuûa öùng duïng 8
CHÖÔNG 2 : THÖ VIEÄN MFC CUÛA MICROSOFT
& ÖÙNG DUÏNG CÔ BAÛN TRONG WINDOWS 10 2.1 Thö vieän MFC (Microsoft Foundation Class) 10 2.2 Tieáp an MFC 10 2.3 Taïo öùng duïng windows vôùi MFC nhö theá naøo ? 10 2.4 Lôùp quaûn lyù tieåu trình CwinThread 11 2.5 Lôùp quaûn lyù tieåu trình giao dieän chính CwinApp 12 2.6 Thöïc hieän öùng duïng ñôn giaûn 14 2.7 Thöïc hieän öùng duïng giao taùc ñôn giaûn 20 2.8 Taïo môùi Icon Resource cho öùng duïng 25 2.9 Löu tröõ chöông trình nguoàn 27 2.10Lôùp Cstring cuûa MFC 27
CHÖÔNG 3 : CAÙC LÔÙP GIAO DIEÄN ÑOÀ HOÏA CUÛA MFC 29 3.1 Caùc coâng cuï giao dieän ñoà hoïa 29 3.2 Device Context 29 3.3 Toïa ñoä treân giao dieän ñoà hoïa 29 3.4 Caùc lôùp MFC hoã trôï GDI 30 3.4.1 Caùc lôùp ñoái töôïng ñieåm, hình chöõ nhaät 30
3.4.2 Lôùp Cpen 31 3.4.3 Lôùp CBrush 31 3.4.4 Lôùp CFont 32 3.4.5 Lôùp CBitmap 32 3.4.6 Lôùp CPalette 33 3.4.7 Lôùp CRgn 34
3.5 Lôùp CDC 35 3.6 Lôùp CImageList 38
CHÖÔNG 4 : CÖÛA SOÅ GIAO DIEÄN LÔÙP VAØ LÔÙP CWnd 40 4.1 Cöûa soå giao dieän 40 4.2 Lôùp CWnd 40 4.3 Söû duïng ñoái töôïng CWnd 49 4.3.1 Söû duïng CWnd laøm giao dieän chính cuûa öùng duïng 49 4.3.2 ÖÙng duïng chæ chaïy moät baûn (instance) taïi moãi thôøi ñieåm 50
CHÖÔNG 5 : XÖÛ LYÙ MESSAGES 51 5.1 Lôùp xöû lyù message CCmdTarget: 51 5.2 Khai baùo muïc xöû lyù message trong MessageMap 52 5.3 Caùc lôùp keá thöøa CCmdTarget 55 5.4 MessageMap cuûa lôùp keá thöøa CWnd trong öùng duïng 55 5.4.1 Cöûa soå cuûa öùng duïng coù chöùc naêng hoaït ñoäng 55 5.4.2 WM_PAINT vaø haønh vi OnPaint cuûa CWnd 58
CHÖÔNG 6 : ÖÙNG DUÏNG COÂNG CUÏ GDI 60 6.1 DC vaø BITMAP 60 6.2 ÖÙng duïng vôùi cöûa soå chính hieån thò aûnh 60 6.3 Sao cheùp aûnh töøø DC ñeán DC, phoùng to & thu nhoû aûnh 63 6.4 DC trong boä nhôù ( DC aûo) – vuøng veõ ñeäm lyù töôûng 64 6.5 AÛnh chuyeån ñoäng trong vuøng client 65 6.6 CImageList – coâng cuï quaûn lyù boä aûnh cuøng côõ 66 6.7 CRgn – Cöûa soå coù hình daïng tuøy yù 67
CHÖÔNG 7 : MENU – PHÍM TAÉT 69 7.1 Ñònh nghóa 69
7.2 Menu resoure 69
7.3 Söû duïng menu resource 71
7.4 Muïc xöû lyù command message töø muïc choïn cuûa menu 72
10.3.1 Thieát keá ToolBar resource 120
10.3.2 Duøng toolbar resource cho CToolBar cuûa FrameWnd 121
7.5 Phím taét (hot key ) cho muïc choïn treân menu
7.6 Lôùp quaûn lyù menu – CMenu
73 10.4 Lôùp CFrameWnd 121
75 10.5 Söû duïng frame window laøm giao dieän chính 123
7.7 Xöû lyù ñieàu khieån muïc choïn cuûa menu 77 10.5.1
10.5.2
Thöïc hieän öùng duïng vôùi giao dieän frame window 123
String Table vaø CFrameWnd 124
CHÖÔNG 8 : CAÙC LÔÙP ÑOÁI TÖÔÏNG NHAÄP LIEÄU 10.5.3 Duøng MFC wizard taïo öùng duïng giao dieän framewindow 130 ( WINDOWS CONTROLS ) 78
8.1 CStatic 78 CHÖÔNG 11 : CAÙC KIEÁN TRUÙC DOCUMENT – VIEW 134
8.2 CEdit 8.3 CButton 8.4 ClistBox
8.5 CComboBox 8.6 CSpinButtonCtrl 8.7 CProgressCtrl 8.8 CscrollBar
8.9 CSliderBar
80 11.1 CDocument 134 84 11.2 CView 135 85 11.3 CFrameWnd 136 88 11.4 CDoctemplate 136 91 11.5 Hoã trôï töø phía ñoái töôïng quaûn lyù öùng duïng 137 93 11.6 Trình töï taïo laäp caùc ñoái töôïng tham gia boä DVF 138 94 11.7 Text Document Appication 139 96 11.8 Rich Text Format (rtf) Document Appication 143
11.9 HTML Document View Appication 146
CHÖÔNG 9 : HOÄP HOÄI THOAÏI 97 11.10 Moät soá lôùp view ñaëc bieät 149
9.1 Hoäp hoäi thoaïi (Dialog) 97 9.2 Lôùp CDialog 97 9.3 Taïo vaø söû duïng dialog trong chöông trình 99 9.3.1 Taïo dialog resource 99
9.3.2 Khai baùo lôùp keá thöøa CDialog söû duïng dialog resource 103
9.3.3 Söû duïng dialog trong chöông trình 104
11.10.1 11.10.2 11.10.3 11.10.4
11.10.5
CListView 149 CTreeView 150 CSplitterWnd 152 Söû duïng splitterwnd trong frame window 154
Caùc ví duï thöïc haønh 155
9.4 Lieân keát giöõa dialog vaø caùc thaønh phaàn khaùc 104 9.5 Söû duïng dialog laøm giao dieän chính cuûa öùng duïng 106 9.5.1 Thöïc hieän öùng duïng vôùi giao dieän chính laø dialog 106 9.5.2 Duøng MFC wizard taïo öùng duïng vôùi giao dieän dialog 107
9.6 Khai baùo bieán cho control treân dialog 109 9.7 Khai thaùc caùc tieän ích hoã trôï 112
CHÖÔNG 10 : KHUNG CÖÛA SOÅ GIAO DIEÄN CHÍNH 117
CHÖÔNG 12 : MOÄT SOÁ VAÁN ÑEÀ TRONG WINDOWS 158 12.1 Taäp tin INI 158 12.2 System Registry 160 12.3 Vuøng Status Area treân Taskbar 162 12.4 ÖÙng duïng ScreenSaver 167 12.4.1 Ñaëc ñieåm 168 12.4.2 Tham soá doøng leänh 168
12.4.3 Ñaëc ñieåm giao taùc vôùi ngöôøi duøng 170
10.1 Khung cöûa soå giao dieän (Frame Window)
10.2 Thanh traïng thaùi (statusbar) & lôùp CStatusbar
117 12.4.4 Thöïc hieän öùng duïng ScreenSaver ñôn giaûn 171
117 12.5 ÖÙng duïng söû duïng nhieàu tieåu trình 175
10.3 Thanh coâng cuï (toolbar) & lôùp CToolBar 119 12.5.1 Tieåu trình xöû lyù noäi 175
12.5.2 Tieåu trình giao dieän
12.5.3 Caùc haøm hoã trôï
177 13.7.2 Thieát keá öùng duïng nhaän mail 220
179 13.8 TCP vôùi HTTP vaø FTP 223
12.6 Laäp trình Multimedia vôùi MCI
12.7 AÁn ñònh moät soá tính naêng cuûa Windows
12.8 Baãy (hook) message (Windows Hook)
179 13.8.1 Lôùp CInternetSession 223 181 13.8.2 Lôùp CInternetFile 224
182 13.8.3 Lôùp CFtpConnection 225
12.8.1 Caùc kieåu hook (Hook Type) 183 12.8.2 Danh saùch hook (Hook Chain) 183 12.8.3 Thuû tuïc hook (Hook Procedure) 183 12.8.4 Caùc dòch vuï lieân quan hook 184
12.8.5 ÖÙng duïng hook messages cuûa keyboard 185
13.8.4 Lôùp CFtpFindFile 227 13.8.5 Lôùp CHttpConnection 228 13.8.6 Lôùp CHttpFile 229 13.8.7 Thöïc hieän öùng duïng FTP client ñôn giaûn 231
13.8.8 Thöïc hieän öùng duïng HTTP client ñôn giaûn 232
12.9 Caøi ñaët cheá ñoä thöïc hieän öùng duïng töï ñoäng
CHÖÔNG 13 : MFC VÔÙI INTERNET
186
Phuï luïc A:
187
MOÄT SOÁ VAÁN ÑEÀ
LAÄP TRÌNH HÖÔÙNG ÑOÁI TÖÔÏNG 234
13.1 Giao thöùc truyeàn thoâng TCP/IP
13.1.1 Giôùi thieäu
187 A.1 Laäp trình höôùng ñoái töôïng (OOP) 234
187 A.2 Caùc khaùi nieäm 234
13.1.2 Kieán truùc cuûa giao thöùc TCP/IP treân moâ hình DARPA 187 13.1.3 Ñòa chæ IP 189 13.1.4 Subnet 190 13.1.5 Subnet Mask 191
13.1.6 Host domain name 192
A.2.1 Lôùp (Class) 234 A.2.2 Ñoái töôïng (Object) 234 A.2.3 Thuoäc tính (Attribute) 234 A.2.4 Haønh vi (Method) 235
A.2.5 Chöông trình (Program) 235
13.1.7 IP Routing
13.2 Laäp trình TCP/IP vôùi Winsock 13.2.1 Port
13.2.2 Socket
194 A.3 Ñaëc ñieåm laäp trình höôùng ñoái töôïng 235 197 A.4 Phaân loaïi thuoäc tính vaø haønh vi 236 197 A.5 Caùc haønh vi ñaëc bieät 236
198 A.6 Khai baùo lôùp, ñoái töôïng trong C++ 236
13.2.3 Moät soá caáu truùc döõ lieäu cuûa Winsock API 198 13.2.4 Moät soá dòch vuï cuûa Winsock API 199
13.3 MFC vôùi laäp trình Winsock 200
A.6.1 Khai baùo lôùp 236 A.6.2 Khai baùo ñoái töôïng 238
A.6.3 Söû duïng ñoái töôïng trong chöông trình 238
13.3.1 Khôûi ñoäng Winsock 200 A.7 Keá thöøa trong C++ 239
13.3.2 Lôùp CAsyncSocket
13.4 Laäp trình Winsock cho giao thöùc UDP
13.5 Laäp trình Winsock cho giao thöùc TCP
200 A.7.1 204 A.7.2
207 A.7.3
Keá thöøa haønh vi taïo laäp 239 Keá thöøa haønh vi huûy boû 240
Thöïc hieän haønh vi lôùp cô sôû 240
13.6 TCP vôùi SMTP (Simple Mail Transfer Protocol) 215
13.6.1 Qui öôùc giöõa öùng duïng göûi mail vaø nhaän mail 215
A.8 Khai baùo haønh vi toaùn töû soá hoïc 241
A.9 Con troû this 243
13.6.2 Thieát keá öùng duïng göûi mail 217 A.10 Haønh vi virtual 243 13.7 TCP vôùi Pop3 (Post Office Protocol – Version 3) 219 A.11 Thuoäc tính vaø haønh vi tónh 244
13.7.1 Qui öôùc giöõa öùng duïng mail client vaø mail server 219
LÔØI MÔÛ ÑAÀU ✡♈ ☸☪
Ngoân ngöõ laäp trình C++ ñöôïc bieát ñeán nhö laø moät trong nhöõng ngoân ngöõ laäp trình maïnh nhaát nhôø khaû naêng cuûa noù trong vieäc trieån khai phaàn meàm ôû caùc möùc ñoä khaùc nhau. Töø möùc heä thoáng ñeán möùc öùng duïng, töø laäp trình caáu truùc ñeán laäp trình höôùng ñoái töôïng, töø laäp trình döïa treân thuaät giaûi ñeán laäp trình trí tueä nhaân taïo, vaø töø laäp trình cô sôû döõ lieäu ñeán laäp trình cô sôû
tri thöùc…, baát cöù ñaâu, khi maø ngöôøi laäp trình muoán theå hieän yù töôûng khoa
TAØI LIEÄU THAM KHAÛO
[1] Richard Simon, Windows 95 - Win32 Programming API-BIBLE, Waite Group Press 1996.
[2] Jeff Prosise, Programming Windows 95 with MFC, Microsoft Press. [3] M. Tracy, Professional Visual C++ ISAPI Programming, Wrox Press. [4] Dr. GUI, Microsoft Developer Network - MSDN,
Microsoft Corporation Software.
[5] Dino Esposito,Visual C++ Windows Shell Programming, Wrox Press.
hoïc vaø ngheä thuaät cuûa mình treân maùy tính thì C++ laø moät ñieàu nghó ñeán
tröôùc tieân.
✡✠ W☪
Nhöng duø yù töôûng coù bay boång theá naøo ñi nöõa thì cuõng khoâng theå boû qua vaán ñeà caøi ñaët maø moâi tröôøng cho öùng duïng laø ñieàu phaûi quan taâm. Vôùi xu höôùng söû duïng heä ñieàu haønh Microsoft Windows nhö hieän nay, chuùng ta buoäc phaûi nghó ñeán vieäc caøi ñaët öùng duïng cuûa mình trong moâi tröôøng naøy vaø khai thaùc noù sao cho öùng duïng hoaït ñoäng hieäu quaû nhaát.
Microsoft Visual C++, saûn phaåm cuûa Microsoft, vôùi khaû naêng bieân dòch öu vieät vaø loái khai thaùc heä thoáng roäng môû nhôø taäp hôïp lôùp thö vieän MFC cho C++ coù ñaày ñuû caùc tieän ích giuùp chuùng ta veùt ñöôïc moïi ngoõ ngaùch cuûa Windows haàu phuïc vuï cho öùng duïng cuûa mình.
Töø nhöõng nhaän ñònh noùi treân, cuoán saùch naøy ñöôïc thöïc hieän ñeå cuøng caùc baïn baét ñaàu laøm quen laäp trình trong Windows aùp duïng kyõ thuaät laäp trình höôùng ñoái töôïng vôùi C++, nhaèm khai thaùc hieäu quaû thö vieän MFC vaø töøng böôùc du nhaäp vaøo theá giôùi tuyeät vôøi naøy thoâng qua caùc öùng duïng ñöôïc saép xeáp theo caùc caáp ñoä tieán trieån phuø hôïp.
Trong laàn xuaát baûn ñaàu tieân, cuoán saùch naøy chaéc khoâng traùnh khoûi thieáu soùt. Chuùng toâi raát mong tieáp thu yù kieán ñoùng goùp vaø trao ñoåi cuøng baïn ñoïc. Cuoái cuøng, chuùng toâi xin chaân thaønh caûm ôn baïn beø, ñoàng nghieäp ñaõ cung caáp nhöõng nhaän xeùt vaø kieán thöùc quí baùu ñeå thöïc hieän cuoán saùch naøy. Xin caûm ôn caùc baïn hoïc vieân-sinh vieân, nhöõng ngöôøi ñaõ cuøng laøm vieäc vôùi chuùng toâi qua noäi dung naøy vaø ñaõ coù nhöõng yù kieán khaùch quan giuùp chænh söûa cuoán saùch kòp thôøi.
Thaønh phoá Hoà Chí Minh, ngaøy 19.11.2002
Taùc giaû
PHAÀN MEÀM CAÀN CAØI ÑAËT:
- Microsoft Visual C++ 6.0 hoaëc Microsoft Visual C++ .NET. - MSDN ( Microsoft Developer Network ), baûn thaùng 10/2003.
MAÕ NGUOÀN:
Source Code cuûa caùc ví duï minh hoïa trong cuoán saùch naøy vaø cuûa moät soá chöông trình troø chôi maø chuùng toâi mong muoán chia xeû cuøng baïn ñoïc ñöôïc löu trong ñóa meàm ñính keøm, vaø coù theå download töø ñòa chæ:
http://thanh.andisw.com/?id=16&id2=85
WEB SITE:
Source Code ñaëc saéc cuûa nhieàu taùc giaû treân theá giôùi coù theå download: - http://msdn.microsoft.com
- http://www.codeguru.com
- http://www.codeproject.com - http://www.softechsoftware.it - http://www.flipcode.com
- http://nps.vnet.ee
LIEÂN HEÄ:
- Taùc giaû: Leâ Ngoïc Thaïnh
- Cô quan: Khoa Tin Hoïc Quaûn Lyù, Tröôøng ÑHKT TP.HCM Ñòa chæ: 279 Nguyeãn Tri Phöông Q10, TP.HCM.
- Ñòa chæ e-mail: lntmail@yahoo.com
emp@ueh.edu.vn
...
- tailieumienphi.vn
nguon tai.lieu . vn