Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 133 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
133
Dung lượng
2,23 MB
Nội dung
lntmail@yahoo.com : 1.1 Chương trình ( Program ) 1.2 Ứng dụng ( Application ) 1.3 Tiến trình ( Process ) 1.4 Tiểu trình (Thread ) 1.5 Thông điệp ( Message ) 1.5.1 Nguồn gốc của message 1.5.2 Các loại message 1.5.3 Số hiệu message (Message Indentifier – MessageID) 1.5.4 Đặc tả message 1.6 Cửa sổ giao diện (window) của ứng dụng 1.7 Message queue 1.8 Kiến trúc xử lý của ứng dụng trong Windows 1.9 Resource của ứng dụng : 2.1 Thư viện MFC (Microsoft Foundation Class) 2.2 Tiếp an MFC 2.3 Tạo ứng dụng windows vớiMFC như thế nào ? 2.4 Lớp quản lý tiểu trình CwinThread 2.5 Lớp quản lý tiểu trình giao diện chính CwinApp 2.6 Thực hiện ứng dụng đơn giản 2.7 Thực hiện ứng dụng giao tác đơn giản 2.8 Tạo mới Icon Resource cho ứng dụng 2.9 Lưu trữ chương trình nguồn 2.10 Lớp Cstring của MFC : 3.1 Các công cụ giao diện đồ họa 3.2 Device Context 3.3 Tọa độ trên giao diện đồ họa 3.4 Các lớp MFC hỗ trợ GDI 3.4.1 Các lớp đối tượng điểm, hình chữ nhật Trang 1 1 1 1 1 2 2 2 3 3 3 5 7 8 10 10 10 10 11 12 14 20 25 27 27 29 29 29 29 30 30 3.4.2 Lớp Cpen 3.4.3 Lớp CBrush 3.4.4 Lớp CFont 3.4.5 Lớp CBitmap 3.4.6 Lớp CPalette 3.4.7 Lớp CRgn 3.5 Lớp CDC 3.6 Lớp CImageList : 4.1 Cửa sổ giao diện 4.2 Lớp CWnd 4.3 Sử dụng đối tượng CWnd 4.3.1 Sử dụng CWnd làm giao diện chính của ứng dụng 4.3.2 Ứng dụng chỉ chạy một bản (instance) tại mỗi thời điểm : 5.1 Lớp xử lý message CCmdTarget: 5.2 Khai báo mục xử lý message trong MessageMap 5.3 Các lớp kế thừa CCmdTarget 5.4 MessageMap của lớp kế thừa CWnd trong ứng dụng 5.4.1 Cửa sổ của ứng dụng có chức năng hoạt động 5.4.2 WM_PAINT và hành vi OnPaint của CWnd : 6.1 DC và BITMAP 6.2 Ứng dụng với cửa sổ chính hiển thò ảnh 6.3 Sao chép ảnh từø DC đến DC, phóng to & thu nhỏ ảnh 6.4 DC trong bộ nhớ ( DC ảo) – vùng vẽ đệm lý tưởng 6.5 Ảnh chuyển động trong vùng client 6.6 CImageList – công cụ quản lý bộ ảnh cùng cỡ 6.7 CRgn – Cửa sổ có hình dạng tùy ý : 7.1 Đònh nghóa 7.2 Menu resoure 31 31 32 32 33 34 35 38 40 40 40 49 49 50 51 51 52 55 55 55 58 60 60 60 63 64 65 66 67 69 69 69 7.3 Sử dụng menu resource 7.4 Mục xử lý command message từ mục chọn của menu 7.5 Phím tắt (hot key ) cho mục chọn trên menu 7.6 Lớp quản lý menu – CMenu 7.7 Xử lý điều khiển mục chọn của menu : 8.1 CStatic 8.2 CEdit 8.3 CButton 8.4 ClistBox 8.5 CComboBox 8.6 CSpinButtonCtrl 8.7 CProgressCtrl 8.8 CscrollBar 8.9 CSliderBar : 9.1 Hộp hội thoại (Dialog) 9.2 Lớp CDialog 9.3 Tạo và sử dụng dialog trong chương trình 9.3.1 Tạo dialog resource 9.3.2 Khai báo lớp kế thừa CDialog sử dụng dialog resource 9.3.3 Sử dụng dialog trong chương trình 9.4 Liên kết giữa dialog và các thành phần khác 9.5 Sử dụng dialog làm giao diện chính của ứng dụng 9.5.1 Thực hiện ứng dụng với giao diện chính là dialog 9.5.2 Dùng MFC wizard tạo ứng dụng với giao diện dialog 9.6 Khai báo biến cho control trên dialog 9.7 Khai thác các tiện ích hỗ trợ : 10.1 Khung cửa sổ giao diện (Frame Window) 10.2 Thanh trạng thái (statusbar) & lớp CStatusbar 10.3 Thanh công cụ (toolbar) & lớp CToolBar 71 72 73 75 77 78 78 80 84 85 88 91 93 94 96 97 97 97 99 99 103 104 104 106 106 107 109 112 117 117 117 119 10.3.1 Thiết kế ToolBar resource 10.3.2 Dùng toolbar resource cho CToolBar của FrameWnd 10.4 Lớp CFrameWnd 10.5 Sử dụng frame window làm giao diện chính 10.5.1 Thực hiện ứng dụng với giao diện frame window 10.5.2 String Table và CFrameWnd 10.5.3 Dùng MFC wizard tạo ứng dụng giao diện framewindow : 11.1 CDocument 11.2 CView 11.3 CFrameWnd 11.4 CDoctemplate 11.5 Hỗ trợ từ phía đối tượng quản lý ứng dụng 11.6 Trình tự tạo lập các đối tượng tham gia bộ DVF 11.7 Text Document Appication 11.8 Rich Text Format (rtf) Document Appication 11.9 HTML Document View Appication 11.10 Một số lớp view đặc biệt 11.10.1 CListView 11.10.2 CTreeView 11.10.3 CSplitterWnd 11.10.4 Sử dụng splitterwnd trong frame window 11.10.5 Các ví dụ thực hành : 12.1 Tập tin INI 12.2 System Registry 12.3 Vùng Status Area trên Taskbar 12.4 Ứng dụng ScreenSaver 12.4.1 Đặc điểm 12.4.2 Tham số dòng lệnh 12.4.3 Đặc điểm giao tác với người dùng 12.4.4 Thực hiện ứng dụng ScreenSaver đơn giản 12.5 Ứng dụng sử dụng nhiều tiểu trình 12.5.1 Tiểu trình xử lý nội 120 121 121 123 123 124 130 134 134 135 136 136 137 138 139 143 146 149 149 150 152 154 155 158 158 160 162 167 168 168 170 171 175 175 12.5.2 Tiểu trình giao diện 12.5.3 Các hàm hỗ trợ 12.6 Lậptrình Multimedia với MCI 12.7 Ấn đònh một số tính năng của Windows 12.8 Bẫy (hook) message (Windows Hook) 12.8.1 Các kiểu hook (Hook Type) 12.8.2 Danh sách hook (Hook Chain) 12.8.3 Thủ tục hook (Hook Procedure) 12.8.4 Các dòch vụ liên quan hook 12.8.5 Ứng dụng hook messages của keyboard 12.9 Cài đặt chế độ thực hiện ứng dụng tự động : 13.1 Giao thức truyền thông TCP/IP 13.1.1 Giới thiệu 13.1.2 Kiến trúc của giao thức TCP/IP trên mô hình DARPA 13.1.3 Đòa chỉ IP 13.1.4 Subnet 13.1.5 Subnet Mask 13.1.6 Host domain name 13.1.7 IP Routing 13.2 Lậptrình TCP/IP với Winsock 13.2.1 Port 13.2.2 Socket 13.2.3 Một số cấu trúc dữ liệu của Winsock API 13.2.4 Một số dòch vụ của Winsock API 13.3 MFCvớilậptrình Winsock 13.3.1 Khởi động Winsock 13.3.2 Lớp CAsyncSocket 13.4 Lậptrình Winsock cho giao thức UDP 13.5 Lậptrình Winsock cho giao thức TCP 13.6 TCP với SMTP (Simple Mail Transfer Protocol) 13.6.1 Qui ước giữa ứng dụng gửi mail và nhận mail 13.6.2 Thiết kế ứng dụng gửi mail 13.7 TCP với Pop3 (Post Office Protocol – Version 3) 13.7.1 Qui ước giữa ứng dụng mail client và mail server 177 179 179 181 182 183 183 183 184 185 186 187 187 187 187 189 190 191 192 194 197 197 198 198 199 200 200 200 204 207 215 215 217 219 219 13.7.2 Thiết kế ứng dụng nhận mail 13.8 TCP với HTTP và FTP 13.8.1 Lớp CInternetSession 13.8.2 Lớp CInternetFile 13.8.3 Lớp CFtpConnection 13.8.4 Lớp CFtpFindFile 13.8.5 Lớp CHttpConnection 13.8.6 Lớp CHttpFile 13.8.7 Thực hiện ứng dụng FTP client đơn giản 13.8.8 Thực hiện ứng dụng HTTP client đơn giản : A.1 Lậptrình hướng đối tượng (OOP) A.2 Các khái niệm A.2.1 Lớp (Class) A.2.2 Đối tượng (Object) A.2.3 Thuộc tính (Attribute) A.2.4 Hành vi (Method) A.2.5 Chương trình (Program) A.3 Đặc điểm lậptrình hướng đối tượng A.4 Phân loại thuộc tính và hành vi A.5 Các hành vi đặc biệt A.6 Khai báo lớp, đối tượng trong C++ A.6.1 Khai báo lớp A.6.2 Khai báo đối tượng A.6.3 Sử dụng đối tượng trong chương trình A.7 Kế thừa trong C++ A.7.1 Kế thừa hành vi tạo lập A.7.2 Kế thừa hành vi hủy bỏ A.7.3 Thực hiện hành vi lớp cơ sở A.8 Khai báo hành vi toán tử số học A.9 Con trỏ this A.10 Hành vi virtual A.11 Thuộc tính và hành vi tónh 220 223 223 224 225 227 228 229 231 232 234 234 234 234 234 234 235 235 235 236 236 236 236 238 238 239 239 240 240 241 243 243 244 x}(|y Ngôn ngữ lậptrình C++ được biết đến như là một trong những ngôn ngữ lậptrình mạnh nhất nhờ khả năng của nó trong việc triển khai phần mềm ở các mức độ khác nhau. Từ mức hệ thống đến mức ứng dụng, từ lậptrình cấu trúc đến lậptrình hướng đối tượng, từ lậptrình dựa trên thuật giải đến lậptrình trí tuệ nhân tạo, và từ lậptrình cơ sở dữ liệu đến lậptrình cơ sở tri thức…, bất cứ đâu, khi mà người lậptrình muốn thể hiện ý tưởng khoa học và nghệ thuật của mình trên máy tính thì C++ là một điều nghó đến trước tiên. Nhưng dù ý tưởng có bay bổng thế nào đi nữa thì cũng không thể bỏ qua vấn đề cài đặt mà môi trường cho ứng dụng là điều phải quan tâm. Với xu hướng sử dụng hệ điều hành Microsoft Windows như hiện nay, chúng ta buộc phải nghó đến việc cài đặt ứng dụng của mình trong môi trường này và khai thác nó sao cho ứng dụng hoạt động hiệu quả nhất. Microsoft Visual C++, sản phẩm của Microsoft, với khả năng biên dòch ưu việt và lối khai thác hệ thống rộng mở nhờ tập hợp lớp thư viện MFC cho C++ có đầy đủ các tiện ích giúp chúng ta vét được mọi ngõ ngách của Windows hầu phục vụ cho ứng dụng của mình. Từ những nhận đònh nói trên, cuốn sách này được thực hiện để cùng các bạn bắt đầu làm quen lậptrình trong Windows áp dụng kỹ thuật lậptrình hướng đối tượng với C++, nhằm khai thác hiệu quả thư viện MFC và từng bước du nhập vào thế giới tuyệt vời này thông qua các ứng dụng được sắp xếp theo các cấp độ tiến triển phù hợp. Trong lần xuất bản đầu tiên, cuốn sách này chắc không tránh khỏi thiếu sót. Chúng tôi rất mong tiếp thu ý kiến đóng góp và trao đổi cùng bạn đọc. Cuối cùng, chúng tôi xin chân thành cảm ơn bạn bè, đồng nghiệp đã cung cấp những nhận xét và kiến thức q báu để thực hiện cuốn sách này. Xin cảm ơn các bạn học viên-sinh viên, những người đã cùng làm việc với chúng tôi qua nội dung này và đã có những ý kiến khách quan giúp chỉnh sửa cuốn sách kòp thời. Thành phố Hồ Chí Minh, ngày 19.11.2002 Tác giả [1] , Windows 95 - Win32 Programming API-BIBLE , Waite Group Press 1996. [2] , Programming Windows 95 with MFC , Microsoft Press. [3] , Professional Visual C++ ISAPI Programming , Wrox Press. [4] , Microsoft Developer Network - MSDN , Microsoft Corporation Software. [5] , Visual C++ Windows Shell Programming , Wrox Press. xw(vy : - Microsoft Visual C++ 6.0 hoặc Microsoft Visual C++ .NET. - MSDN ( Microsoft Developer Network ), bản tháng 10/2003. : Source Code của các ví dụ minh họa trong cuốn sách này và của một số chương trình trò chơi mà chúng tôi mong muốn chia xẻ cùng bạn đọc được lưu trong đóa mềm đính kèm, và có thể download từ đòa chỉ: http://thanh.andisw.com/?id=16&id2=85 : Source Code đặc sắc của nhiều tác giả trên thế giới có thể 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 : - Tác giả: Lê Ngọc Thạnh - Cơ quan: Khoa Tin Học Quản Lý, Trường ĐHKT TP.HCM Đòa chỉ : 279 Nguyễn Tri Phương Q10, TP.HCM. - Đòa chỉ e-mail: lntmail@yahoo.com emp@ueh.edu.vn Một số khái niệm lậptrình trong môi trường Windows 1 : M 1.1 : Chng trình máy tính là tp hp các ch th ụiu khin hot ụng ca máy, ục b trí theo mt trình t logic nhm phi hp thc hin mt cơng vic xác ụnh. Các ch th ục th hin di dng mã ngun (source code) hay mã máy (machine code). Chng trình mã máy có th thc hin ục trên máy có b lnh tng thích, vi chng trình mã ngun thì phi s dng mt ng dng chun dng ụ chuyn sang mã máy trc khi thc hin. Vic chuyn các ch th dng mã ngun sang ch th mã máy ụ thc hin ục tin hành bng mt trong hai c ch sau: ̇ Thơng dch : Mi ch th mã ngun ục chuyn sang ch th mã máy tng ng và ục thc hin ngay, sau ụó tip tc vi ch th k tip. ̇ Biên dch : Tt c các ch th mã ngun ục chuyn sang các ch th mã máy tng ng. Tp hp các ch th mã máy này gi là chng trình mã máy. Chng trình mã máy ục lu li trong tp tin chng trình và v sau ta có th thc hin chúng mt cách ục lp trên máy. 1.2 : Khi mt chng trình ục cài ụt trên máy tính ụ s dng, ta gi ụó là ng dng, ví d nh ng dng NotePad, ng dng Microsoft Word, Trong mơi trng windows, mi ng dng có th ục thi hành nhiu ln thành nhiu bn khác nhau. Mi bn ụang thc hin ca mt ng dng gi là th hin (instance) ca ng dng ụó. 1.3 : Tin trình là khái nim ch mt instance ụang hot ụng ca ng dng. Khi ta double-click trên biu tng NotePad ụ chy ng dng này, ta có mt tin trình ca ng dng NotePad. 1.4 : Tiu trình là mt nhánh x lý ục lp trong tin trình. Khi mt ng dng ục thc hin ta có thêm mt tin trình. Do bn cht chng trình làm nên ng dng ụó bao gm chng trình chính ( hay ) và các chng trình con mà tin trình ng vi nó có th tách thành các nhánh x lý: mt nhánh x lý chính (primary thread), các nhánh x lý ph (other threads). Các nhánh x lý này gi là các tiu trình. Có hai loi tiu trình: 2 Lậptrình Windows vớiMFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.com ̇ Tiu trình giao din (user-interface thread): Có nhim v x lý các u cu ca ngi dùng trong q trình giao tác vi h. ̇ Tiu trình x lý ni (worker thread) : Có nhim v thc hin các x lý tính tốn bên trong, khơng trc tip nhn u cu ca ngi dùng. Q Thc ra, có th xem tiu trình giao din nh là mt tiu trình x lý ni nhng có tính nng giao tác vi ngi s dng. 1.5 : Thơng ụip (message) là giá tr phn ánh mt ni dung giao tip hay u cu x lý gia h thng (windows) và ng dng, gia các ng dng vi nhau hoc gia các thành phn trong cùng mt ng dng. 1.5.1 : C windows và ng dng ụu có th phát sinh message. ̇ Windows phát sinh message khi cn thơng tin cho ng dng các hot ụng nhp-xut (hot ụng gõ phím, di chuyn hay click chut, . ca ngi dùng), các thay ụi ca h thng (font ch, ch ụ phân gii màn hình, màu sc, .) hoc nhng bin ụi khác liên quan ụn ng dng. ̇ ng dng phát sinh message khi x lý ụiu khin các thành phn bên trong ng dng phi hp th c hin chc nng giao tip vi ngi dùng, hoc khi ng dng thc hin giao tip vi windows hay vi các ng dng khác ụang thc hin trong cùng h thng. 1.5.2 : ̇ Message ục ụnh ngha bi h thng : Là các message do h ụiu hành windows to ra nhm phc v hot ụng ụiu khin tồn b h thng, x lý thơng tin vào-ra hoc các thơng tin khác cho ng dng. Khi có nhu cu, ng dng có th s dng nhng message này ụ phát ụng mt chc nng ụiu khin nào ụó ca windows. ̇ Message ục ụnh ngha bi ngi dùng : Là các message do ngi vit ng dng ụnh ngha nhm to kênh liên lc ục thù gia các thành phn trong ng dng, gia ng dng vi windows hoc vi các ng dng khác ụang thc hin trong cùng h thng. Một số khái niệm lậptrình trong môi trường Windows 3 1.5.3 S : Có rt nhiu message khác nhau ục s dng trong mơi trng windows. ng vi mi message xác ụnh, windows s dng mt giá tr ngun khơng âm ụ ục t, giá tr này gi là s hiu message. Các message do windows ụnh ngha có s hiu ục khai báo sn và duy nht vi các hng s xác ụnh và tên gi gi nh ca chúng có dng WM_ xxx . Các messges do ngi dùng ụnh ngha cng phi ụng ký s hiu. S hiu ụng ký khơng ục trùng lp và có giá tr nh nht bng WM_USER (mt hng s do windows ụnh ngha). S hiu message là c s ụ phân bit các message ln nhau. 1.5.4 Ð : Ð ụi tng nhn message có thêm thơng tin v hồn cnh phát sinh và ý ngha c th ca message, windows cho phép message ục nhn thơng qua mt cu trúc cha s hiu message và các thơng s kèm theo. Cu trúc này ục khai báo thành kiu MSG vi ni dung nh sau: typedef struct { HWND hwnd ; // Giá tr có kích thc 4 bytes (long) UINT message ; // S hiu ca message WPARAM wParam ; // Giá tr khơng âm có kích thc 2 bytes LPARAM lParam ; // Giá tr khơng âm có kích thc 4 bytes DWORD time ; // Thi ụim sinh ra messsge POINT pt ; // Ta ụ cursor khi message ục gi. } ; Trng hwnd (window handle) ca cu trúc cha th (handle) qun lý ca s giao din liên quan ụn message. wParam và lParam là hai tham s gi kèm theo message làm nhim v cha thơng tin b sung. Hai tham s này ục dùng khi message có nhiu ý ngha thc t khác nhau. H Windows s dng giá tr có kích thc 4 bytes ụ qun lý các ụi tng ca nó. Giá tr này gi là th qun lý ụi tng (object handle). ng vi mi loi ụi tng c th, windows s dng mt kiu handle riêng. HWND là kiu handle dùng qun lý ụi tng ca s giao din trong windows. 1.6 C : Ca s giao din là thành phn quan trng trong vic to ra mơi trng giao din ụ ha ca các ng dng trong windows. Cùng vi s phát trin ca h ụiu hành windows, hình nh ca s giao din cng thay ụi theo vi chiu hng sinh ụng hn v hình thc và phong phú hn v chc nng. Ðiu ụó khơng ch góp phn tng tính thm m mà 4 Lậptrình Windows vớiMFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.com còn to s gn gi hn gia giao din ca ng dng trong windows vi ngi dùng. Dng thơng thng ca mt ca s giao din trong windows: ̇ System Menu Box : Cha biu tng ca ng dng, là nút m hp menu h thng vi các mc di chuyn, thay ụi kích thc hoc ụóng ca s. ̇ Caption bar : Thanh tiêu ụ ca ng dng. ̇ Menu bar : H thng menu vi các mc la chn x lý. ̇ Minimize / Maximize Box : Nút ụiu khin thu nh / phóng to ca s. ̇ Restore Box : Nút khơi phc kích thc trc ụó ca ca s. ̇ Border : Ðng vin bao quanh ca s. ̇ Client area : Vùng làm vic ca ca s, dùng ụ hin th thơng tin. ̇ Scroll bar : Thanh cun ni dung vùng làm vic ca ca s. ̇ Window Procedure : Ngồi giao din ụ ha, ca s ca windows có kh nng tip nhn và x lý message. Kh nng này ục thc hin thơng qua hàm x lý message mà ta ụã gn cho ca s. Hàm x lý này có khai báo nh sau: LRESULT CALLBACK ( HWND hwnd , // Tham s cha Handle ca ca s liên quan UINT uMsg , // Tham s cha s hiu message WPARAM wParam , // Tham s b sung th nht kiu WORD LPARAM lParam // Tham s b sung th hai kiu LONG ) ; Hàm tr v mt giá tr có kích thc là 32 bits. Khi mt u cu x lý ục chuyn ụn ca s di dng message, hàm WindowProc gn vi ca s s cn c trên s hiu message (uMsg) ụ chn x lý phù hp. Theo ngun tc, nu message ục x lý hồn tt thì hàm tr v giá tr 0, ngc li (message khơng thuc Một số khái niệm lậptrình trong môi trường Windows 5 kh nng x lý ca ca s) hàm phi chuyn message cho windows x lý thơng qua li gi hàm x lý message mc nhiên ca windows. Hàm x lý này có tên gi là DefWindowProc vi khai báo nh sau: LRESULT ( // Default Window Procedure HWND hWnd , // Vi các tham s có ý ngha nh trên UINT Msg , WPARAM wParam , LPARAM lParam ) ; Khi ụó, kt qu tr v ca DefWindowProc ục dùng làm kt qu ca hàm WindowProc . Qui tc nói trên cn phi ục ụm bo, nu khơng, ng dng có th làm ri lon hot ụng ca h ụiu hành windows. 1.7 : Message queue là danh sách th t các message do windows to ra và ục dùng ụ cha các message ụang ch ục x lý. Message queue hot ụng theo ngun tc FIFO (First-In, First-Out: vào trc, ra trc). Có hai loi message queue trong windows: ̇ Message queue ca h thng (system queue) : Ðc windows dùng riêng cho vic lu tr các messge ục t thơng tin nhp-xut liên quan ụn thit b phn cng trong q trình h thng giao tác vi ngi dùng. ̇ Message queue ca ng dng (application queue) : Ðc windows to ra và cp cho các th hin ca ng dng. Windows t ụng ụiu phi các message t system queue sang application queue mt cách phù hp, nh ụó mi ng dng có th tip nhn và thc hin các u cu x lý ca ngi dùng thơng qua h thng. C ch này ngn các ng dng trong windows quyn truy cp trc tip các thit b phn cng ca máy tính. Q Vic truy cp message queue ca ng dng ục thc hin vi s h tr ca các hàm liên quan do windows cung cp nh sau: ̇ Ch và ly mt message t message queue ca ng dng : BOOL ( LPMSG lpMsg , // Con tr ụn bin MSG nhn thơng tin HWND hWnd , // Handle ca ca s liên quan UINT wMsgFilterMin , // S hiu message nh nht nhn ục UINT wMsgFilterMax // S hiu message ln nht nhn ục ); Hàm t ụng ch ụn khi phát hin có message cn x lý trong message queue. Khi ụó, message vào trc nht s ục ly ra khi hàng ch và thơng tin ca nó ục ụin vào bin kiu MSG ch bi 6 Lậptrình Windows vớiMFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.com con tr tham s plMSG . Khi ụã ly ục mt message, hàm kt thúc và tr v mt giá tr ngun. Nu message nhn ục là message kt thúc ng dng (s hiu WM_QUIT) thì hàm tr v giá tr 0. Ngc li, hàm tr v giá tr khác 0. ̇ Kim tra và ly mt message trong message queue ca ng dng : BOOL ( LPMSG lpMsg ; // . Nh HWND hWnd ; UINT wMsgFilterMin ; UINT wMsgFilterMax ; UINT wRemoveMsg ; // Có thc hin xóa message khơng ? // PM_NOREMOVE: khơng xóa ); Hàm tr v giá tr 0 nu message queue rng. Ngc li, hàm tr v mt giá tr khác khơng và thơng tin v message ục ụin vào bin kiu MSG ục ch bi tham s kiu con tr lpMSG . ̇ Din dch message ca bàn phím sang mã phím ASCII : BOOL ( CONST MSG * lpMsg ; // con tr ụn bin cha message ); Tham s lpMsg là con tr ch ụn bin kiu MSG cha ni dung ục t message ục ly t message queue và cn din dch. Hàm tr v giá tr khác 0 nu message nhn ục tng ng vi mt thao tác trên bàn phím (nhn phím: WM_KEYDOWN, WM_SYSKEYDOWN; thơi nhn phím: WM_KEYUP, WM_SYSKEYUP) hoc mt message có ý ngha tng ụng mà vic din dch sang mã phím ASCII là thành cơng. Khi ụó hàm t ụng to message WM_CHAR cho phím din dch ục. Trong các trng hp khác, hàm tr v giá tr 0. Một số khái niệm lậptrình trong môi trường Windows 7 ̇ Ðiu phi message ụn ca s giao din chính: Ca s giao din chính ca ng dng có th tip nhn và x lý message thơng qua hàm ca nó (1.6). Nh vy, ta có th ụiu phi message ly t message queue ca ng dng ụn cho ca s chính x lý. Vic ụiu phi ục thc hin thơng qua hàm sau: LRESULT ( CONST MSG * lpmsg ; // Con tr ụn bin cha message ); Tham s lpMSG ch ụn bin kiu MSG cha thơng tin ục t message ục ụiu phi. Hàm ụiu phi s ch ụn khi hàm x lý message WindowProc ca ca s chính x lý xong messge, và ly giá tr kt thúc ca hàm này làm giá tr tr v ca chính nó. H Q trình tip nhn và ụiu phi x lý message t message queue ca ng dng ục tin hành liên tc cho ụn khi nhn ục message kt thúc ng dng (WM_QUIT). Q trình này có tên gi là vòng lp nhn và ụiu phi message (MessageLoop). Ðon chng trình nhn và ụiu phi message trong ng dng ục cài ụt nh sau: MSG ; // bin cha ni dung ục t message nhn ục while( GetMessage( &msg, NULL, 0, 0 ) != 0 ) { // Nu message nhn ục khơng phi là WM_QUIT TranslateMessage(&msg); // Din dch nu là phím DispatchMessage(&msg); // Ðiu phi cho ca s chính. } 1.8 : Khi ng dng ục thc hin, windows to thêm mt tin trình cho th hin mi ca ng dng, ụng thi xây dng mt message queue dùng riêng cho th hin này. Tiu trình chính ca tin trình ục to ra có nhim v thc hin MessageLoop trên message queue dành cho ng dng, ụng thi khi to các giao din và tiu trình h tr (nu cn). Q Các cách x lý ca tiu trình chính khi nm quyn ụ iu khin ng dng: ̇ Khơng thc hin x lý nào c: ng dng kt thúc. ̇ Thc hin MessageLoop nhng khơng to ca s giao din chính: ng dng ch nhn message nhng ngi dùng khơng giao tác ục. ̇ Khi to mt ca s vi hàm x lý message WindowProc và chn ca s này làm ca s giao din chính: Hàm WindowProc ca ca s s tip nhn và x lý message ục ụiu phi t MessageLoop ca tiu trình chính. Ngi dùng có th giao tác và kt thúc ng dng ục. ̇ Nh mc th ba, ụng thi to ra các tiu trình phc v: ng dng có kh nng tip nhn và thc hin ụng thi nhiu u cu x lý. 8 Lậptrình Windows vớiMFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.com 1.9 Ði vi mt chng trình trong windows, ngồi phn mã lnh ca các hàm x lý, resource là mt thành phn khơng kém phn quan trng cha các ni dung h tr cho vic trang trí hoc phc v cho mt mc ụích ục bit ca ng dng. Các ni dung ph bin trong resource nh sau: ̇ nh nh ục t v trí làm vic ca thit b liên quan nh mouse, pen, trackball. Khi ngi dùng tác ụng lên nhng thit b này thì windows s dng cursor ụ phn ánh hin tng ụó. ̇ : Tp nh ụim (pixels) ca mt nh. Các nh ụim này b trí theo các dòng và phi hp làm nên hình nh ca ụi tng. ̇ : Thơng tin mơ t khung giao din vi các ụi tng nhp liu bên trong, là c s ụ to ra các hp hi thoi trong ng dng. ̇ : nh nh ục dùng ụ ục t chc nng ca mt ụi tng, ng dng hay mt ni dung d liu. ̇ (Hypertext Markup Language): Ngơn ng dùng to ra nhng tài liu dng vn bn vi nhng ký pháp và k thut ụnh dng mà trình duyt tng ng có th th hin mt cách xúc tích. Một số khái niệm lậptrình trong môi trường Windows 9 ̇ : Mt danh sách các la chn x lý mà ngi dùng có th chn nhm thc hin mt x lý xác ụnh ̇ : Bng cha các chui ục ụánh du phân bit bi các s hiu và ục s dng nh các thơng báo trong chng trình. Vic s dng String Table giúp ng dng d dàng thay ụi ngơn ng giao din ca nó mà khơng cn phi có s chnh sa trên phn mã lnh. ̇ : Tp các nh con xác ụnh các nút ục cài ụt trên thanh cơng c ca ca s hay hp hi thoi trong ng dng. Mi nút này là mt mc chn (có th thay th mc chn ca menu) giúp to ra các message lnh (WM_COMMAND) vi s hiu phân bit ụ có th n ụnh x lý cn thit. ̇ : Phn khai báo các thơng tin liên quan ụn ng dng, tác gi. ̇ : Cha thơng tin v b font ch ục lu trong tp tin . ̇ : Bao gm các ni dung khơng thuc các loi ni dung resource chun nói trên. Ngi dùng có th tùy ý cài vào resource ca ng dng, ụng thi phi t cài ụt x lý thích hp cho các resource này trong chng trình. [...]... nh h ng biên d ch và các ch th s d ng th vi n MFC c n cho d án: 14 Lậptrình Windows vớiMFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.com Thư viện MFC của Microsoft & ứng dụng cơ bản trong windows 15 #if !defined( _DU_AN_0_ ) #define _DU_AN_0_ // _DU_AN_0_ giúp trình d ch khơng th c hi n l p ch th resource và i t ng l p trình t ng ng c a MFC trong d án Th c hi n nh sau: ): - Right-click... p c a MFC, l p i t ng qu n lý ti u trình c t o ra trong ti n trình c a m t ng d ng ang c th c hi n Ti u trình c qu n lý có th là là ti u trình giao di n ho c ti u trình x lý n i Các d ch v c b n ph c v cho qu n lý ti u trình do CWinThread cung c p thơng qua các thu c tính và hành vi c a nó ̇ DWORD : Thu c tính l u s hi u c a ti u trình : L u con tr i t ng c a s giao di n ̇ CWnd* chính c a ti u trình. .. ̇ Làm th nào t o i t ng ti u trình chính c a ng d ng ? ̇ Làm th nào t o i t ng giao di n c a ng d ng ? ̇ Qu n lý t ng tác gi a i t ng ng d ng và i t ng giao di n ? B ng vi c xem xét các l p MFC liên quan s giúp l n l t lý gi i các câu h i c t ra Ti p theo, chúng ta tìm hi u xem nh ng l p nào c a MFC giúp khai báo i t ng ti u trình trong ng d ng 10 Lập trình Windows với MFC - Microsoft Visual C++ 6.0... phiên b n biên d ch ch ng trình : Biên d ch ch ng trình v i thơng tin debug : Phiên b n em giao, khơng ch a thơng tin debug Ch n m c / : Sau ó ch n Ð ng ký các h tr c a ng ký này là c s 16 : Lo i n i dung t p tin (.rc) : B sung t p tin vào d án : Tên t p tin, trùng v i tên c a d án MFC cho thao tác trên resource: Vi c t o quan h gi a các n i dung c a Lậptrình Windows vớiMFC - Microsoft Visual C++... ng h n Thư viện MFC của Microsoft & ứng dụng cơ bản trong windows ) Ch n 17 ̇ n nh biên d ch v i th vi n MFC: Ch n m c / Trong h p h i tho i , : : Ch n phiên b n n nh (ví d : Win32 Debug ), : Các n nh chung cho d án : Cách liên k t th vi n MFC vào ng d ng Có th tùy ch n m t trong hai cách sau: Ÿ Use MFC in Shared DLL: Ch ng trình s d ng th vi n MFC theo c ch liên k t ng T p tin ch ng trình có kích th... 18 Lập trình Windows với MFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.com : Lo i n i dung t p tin (.cpp) : B sung t p tin vào d án : Tên t p tin (MAIN) Sau ó ch n , nh p n i dung t p tin: Trong màn hình so n th o c a #include "stdafx.h" // T p tin ch a ng ký th vi n c a MFC CWinApp ; // Ð i t ng qu n lý ti u trình chính Sau khi nh p xong, ch n m c / l u t p tin ̇ Biên d ch ch ng trình: ... resource c a d án , sau ó ch n m c Ch n hành vi Trong ph n so n th o n i dung c a hành vi , ta cài t o n ch ng trình x lý sau: l p BOOL CEmpApp:: { 24 thu c () Lập trình Windows với MFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.com Thư viện MFC của Microsoft & ứng dụng cơ bản trong windows 25 ̇ Ch n m c ̇ Th c hi n n nh thơng s c a icon thơng qua h p h i tho i sau: - ID ̇ Ch n m c Ta nh... và //}} 54 Lập trình Windows với MFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.com 5.3 : Các lớp đối tượng của MFC kế thừa từ CCmdTarget có chức năng xử lý message là CWnd, CWinApp, CDocument Ứng dụng có thể dựa trên những lớp này để xây dựng các lớp kế thừa đảm nhận chức năng xử lý message phù hợp với yêu cầu của ứng dụng : 5.4 5.4.1 : Trong phần này, ta thực hiện ứng dụng với cửa sổ...: : 2.1 Th vi n MFC c a Microsoft bao g m các l p c b n, cài t b ng ngơn ng C++, h tr vi c l p trình trong mơi tr ng windows T các l p này, MFC xác l p n n t ng hình thành ng d ng c a windows, bao g m vi c nh ngh a b khung ng d ng, các cơng c chu n và ph bi n b sung vào b khung nói trên nh m t o ra ng d ng hồn ch nh V i MFC, cơng vi c c a ng i l p trình ch còn là vi c l a ch n các... // ph n sau 22 Lập trình Windows với MFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.com , sau ó ch Ch n Trong h p h i tho i Thơng tin c a d án và ph n m r ̇ K th a hành vi Dùng hành vi này cài t x n , Ch n k t thúc c l u trong t p tin có cùng tên v i tên ng là c a l p CWinApp cho l p lý b sung nh u c u c a ng d ng: Thư viện MFC của Microsoft & ứng dụng cơ bản trong windows 23 Trong . từ lập trình cấu trúc đến lập trình hướng đối tượng, từ lập trình dựa trên thuật giải đến lập trình trí tuệ nhân tạo, và từ lập trình cơ sở dữ liệu đến lập. là các tiu trình. Có hai loi tiu trình: 2 Lập trình Windows với MFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.com ̇ Tiu trình giao