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