TÌM HIỂU VỀ MFC VÀ XÂY DỰNG ỨNG DỤNG SỬ DỤNG MFC
ĐỀ TÀI: TÌM HIỂU VỀ MFC VÀ XÂY DỰNG ỨNG DỤNG SỬ DỤNG MFC Nhóm thực hiện: Nhóm 6 DANH SÁCH NHÓM 6 1. Trần Thị Hường (NT) 2. Nguyễn Thị Huyên 3. Dương Hiền Huyền 4. Hà Thị Thu Huyền 5. Vũ Thị Liên (TK) 6. Vũ Thị Lan 7. Doãn Thị Loan 8. Trần Thanh Long 9. Trần Thị Nhật Linh A- MỞ ĐẦU Ngôn ngữ lập trình C++ được biết đến như là một trong những ngôn ngữ lập trì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ậ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 trình cơ sở tri thức…Bất cứ đâu, khi mà người lập trì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à điều nghĩ đến đầu tiên. Và, theo đó, vấn đề cài đặt 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 nên 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 có đầy đủ các tiện ích xứng đáng là lựa chọn của bạn. Sau đây chúng ta sẽ cùng tìm hiểu về MFC và xây dựng một ứng dụng đơn giản sử dụng ứng dụng này. Nhóm 6- Lớp 1202INFO1311- Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 2 B – NỘI DUNG I ) TÌM HIỂU VỀ MFC (microsoft foundation class) 1. Khái quát về MFC 1.1 . Khái niệm MFC là thư viện 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 hoàn chỉnh. Với MFC, công việc của người lập trình chỉ còn là lựa chọn các thành phần cần thiết, điều chỉnh và phối hợp chúng hợp lý để có được ứng dụng kết quả mong muốn. 1.2. Một số lớp cơ bản 1.2.1.Lớp quản lý tiểu trình CwinThread CwinThread là một lớ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 thực hiện. 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 m_ nThread ID:thuộc tính lưu số hiệu của tiểu trình CWND m_pMain Wnd: Lưu con trỏ đối tượng cửa sổ giao diện chính của tiểu trình. Khi cửa sổ giao diện chấm dứt hoạt động, tiểu trình liên quan sẽ kết thúc. Nếu tiểu trình thuộc loại tiểu trình xử lý nội thì giá trị này kế thừa từ tiểu trình giao diện cấp cao hơn. CwinThread(): Hành vi tạo lập đối tượng tiểu trình Vitual BOOL initinstance(): Khởi tạo thông số cho đối tượng tiểu trình và đảm nhận các xử lý bổ sung khác của ứng dụng. Đối với tiểu trình giao diện, hành vi này dùng để khởi tạo đối tượng cửa sổ giao diện và gán địa chỉ của đối tượng cửa sổ cho m_pMain Wnd Virtual int Exitinstance(): Hành vi kết thúc của đối tượng tiểu trình. Thông qua hành vi này, đối tượng quản lý tiểu trình thực hiện hoàn trả các tài nguyên của hệ thống mà nó đã đăng ký sử dụng. Virtual int Run(): Hành vi dành riêng cho tiểu trình giao diện, nó thực hiện vòng lặp nhận message,chuyển message cho hành vi PreTranslateMessage của lớp. Nếu hành vi này trả về giá trị 0 thì message sẽ tiếp tục được chuyển đến các hàm diễn dịch phím translateMessage và hàm điều phối message Dispatch Message. Nhóm 6- Lớp 1202INFO1311- Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 3 Virtual BOOL preTranslateMessage: Hành vi cho phép can thiệp trước trên các message nhận được từ message queue của ứng dụng.Thông qua đó, tiểu trình giao diện có thể thực hiện các tiền xử lý message đặc trưng nhằm đáp ứng yêu cầu đặt ra cho ứng dụng. 1.2.2. Lớp quản lý tiểu trình giao diện chính CWinApp CwinApp, kế thừa từ CwinThread, là lớp đối tượng chuyên dùng quản lý tiểu trình giao diện chính của ứng dụng.Ứng dụng Windows chỉ được phép sử dụng một đối tượng thuộc lớp này. Ngoài các thuộc tính, hành vi kế thừa public từ CwinThread, CwinApp có các thuộc tính và hành vi bổ sung sau : Const char* m_pszAppName : Lưu chuỗi tên của ứng dụng. LPTSTR m_lpcmdLine : Lưu nội dung chuỗi tham số dòng lệnh. Tham số dòng lệnh là toàn bộ phần nội dung mà người dùng gõ vào ngay sau chuỗi đường dẫn và tên chương trình ứng dụng khi họ thực hiện ứng dụng.Đối với ứng dụng có nhiều chế độ hoạt động khác nhau thì việc sử dụng tham số dòng lệnh là một cơ chế xác lập các giao ước giữa ứng dụng và người dùng để chọn chế độ sử dụng ứng dụng thích hợp. Int m_nCmdShow : Lưu giá trị thông số đã được dùng để kích hoạt cửa sổ giao diện chính của ứng dụng CwinApp() : Tạo lập đối tượng tiểu trình Hành vi hiển thị hộp thông báo và chờ nhận ý kiến người dùng : Virtual int DomessageBox { LPCT STR lpsz prompt// nội dung thông báo UINT nType // Dạng hộp thông báo UINT hlpindex = 0 // Số hiệu mục giúp đỡ( Win help) } Hành vi này được kích hoạt với tham số tương ứng mỗi khi trong chương trình sử dụng hàm AfxMessageBox để hiển thị hộp thông báo. nType //ấn định dạng hộp thông báo. Giá trị này là sự kết hợp giữa thông số qui định biểu tượng hiển thị và các nút chọn bố trí trong hộp. H/vi DoMessageBox chờ người sử dụng trả lời bằng cách chọn một nút chọn xác định trong hộp thông báo. Hành vi kết thúc với giá trị trả về là số hiệu của một nút được chọn.Kế thừa hành vi này để chặn và thực hiện xử lý đặc trưng cho tất cả các lời gọi AfxMessageBox trong ứng dụng. Hàm AfxMessageBox sử dụng DoMessageBox để hiển thị hộp thông báo và lấy giá trị của hành vi này làm kết quả trả về của nó. 1.2.3. Một số lớp thường dùng - Lớp CWnd : Đây là lớp đối tượng quản lý cửa sổ của Windows. Thông qua các thuộc tính và hành vi của lớp CWnd, MFC cung cấp các dịch vụ cần thiết cho phép tạo lập và khai thác các tính năng của cửa sổ Windows một cách dễ dàng. Nhóm 6- Lớp 1202INFO1311- Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 4 - Lớp Cmenu: lớp quản lý Menu thông qua các thuộc tính và hành vi đặc trưng - Các lớp đối tượng nhập liệu: Lớp đối tượng nhập liệu, kế thừa từ lớp CWnd, cho phép quản lý các mục nhập liệu trên cửa sổ giao diện + Cstatic: Lớp đối tượng quản lý mục thông báo hoặc ảnh trên cửa sổ giao diện. + Cedit: Lớp đối tượng quản lý hộp nhập trên cửa sổ giao diện.Ngoài việc hỗ trợ xử lý các hoạt động nhập liệu, Cedit còn có khả năng thông tin cho cửa sổ cha của hộp nhập về tình hình nhập liệu đang diễn ra trong hộp. + Cbutton: Lớp đối tượng quản lý nút chọn trên cửa sổ giao diện.Trong Windows, các nút chọn có thể hoạt động độc lập hay theo nhóm. + Lớp đối tượng quản lý hộp nhập chứa danh sách các mục chọn trên cửa sổ giao diện. Tùy theo loại ListBox mà khi sử dụng, người dùng được phép đánh dấu chọn một hoặc nhiều mục trong ListBox. - Lớp quản lý hộp hội thoại Cdialog: Là lớp đồi tượng kế thừa từ lớp Cwnd, được sử dụng để quản lý dialog. 2. Lập trình Windows với MFC 2.1. Khái quát về lập trình Windows với MFC Lập trình Windows với MFC là kỹ thuật lập trình sử dụng bộ thư viện MFC của Microsoft để xây dựng các ứng dụng trong windows( windows app) và các ứng dụng khác như DLL, COM,ActiveX Bản chất của việc lập trình này là làm việc với C++ thông qua các lớp và đối tượng. Kỹ thuật lập trình này có một số ưu nhược điểm sau: Ưu điểm: + Bản chất là lập trình hướng đối tượng với C++ + Người lập trình đỡ phải nhớ nhiều hàm và cấu trúc vì chúng đã được gói chung vào các lớp cơ bản. + Thời gian phát triển một ứng dụng nhanh bởi sự hỗ trợ của bộ Wizard với Visual studio. Nhược điểm: + Chương trình khi biên dịch ra sẽ khá lớn cỡ độ từ vài MB đến vài chục MB tùy vào chế độ biên dịch static link ( đưa toàn bộ vào một exe hoặc một dll duy nhất) hoặc chế độ Dynamic linked ( bắt đính kèm mấy tệp dll của MFC). + Vẫn phải đính kèm các tệp tin của visual C++ như msvcrtX.dll và msvcppX.dll ( tùy phiên bản của VC++). Nhóm 6- Lớp 1202INFO1311- Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 5 + Đối với các ứng dụng MFC lớn, việc làm giảm tốc độ của ứng dụng so với việc xây dựng ứng dụng bằng APIs là không thể tránh khỏi, bởi vì các lớp bao của MFC quá rườm rà và phức tạp. 2.2. Môi trường lập trình MS Visual C++ Môi trường lập trình Microsoft Visual C++ bao gồm: - Miền làm việc Khi khởi động lần đầu tiên, vùng bên trái Developer studion được gọi là miền làm việc, đây chính là vùng để điều hành các phần khác nhau của các dự án phát triển(project). Miền làm việc này cho phép xem các phần của ứng dụng theo ba cách khác nhau( như các hình dưới đây) Class View: cho phép điều hành và thao tác mã nguồn trên mức lớp C++ Resource View: cho phép tìm và chọn lọc các tài nguyên khác nhau trong ứng dụng như thiết kế cửa sổ hội thoại, biểu tượng, menu, toolbar… Nhóm 6- Lớp 1202INFO1311- Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 6 File View: cho phép xem và điều hành tất cả các file trong ứng dụng. - Cửa sổ xuất ( output pane) Cửa sổ này nằm ở phần dưới cùng trong cửa sổ ứng dụng Visual C++, thường có thể không hiện trên màn hình khi khởi động ứng dụng Visual C++ lần đầu tiên mà sẽ xuất hiện sau khi thực hiện biên dịch ứng dụng lần đầu tiên. Phần của sổ này là nơi cung cấp tất cả thông tin cần thiết cho người dùng như các câu lệnh, lời cảnh báo và thông báo lỗi của trình biên dịch, đồng thời sẽ là nơi chương trình gỡ rối hiển thị tất cả các biến với những giá trị hiện hành trong thời gian thực thi trong mã nguồn. Nhóm 6- Lớp 1202INFO1311- Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 7 - Vùng soạn thảo: Đây là vùng bên phải của môi trường để người dùng thực hiện tất cả thao tấc soạn thảo chương trình khi sử dụng Visual C++, nơi các cửa sổ soạn thảo chương trình hiển thị, đồng thời là nơi cửa sổ vẽ hiển thị khi người dùng thiết kế hộp thoại. - Thanh thực đơn ( menu): Lần đầu tiên chạy Visual C++, có ba thanh công cụ hiển thị ngay dưới thanh menu ( menu Bar). Trong Visual C++ có sẵn nhiều thanh công cụ khác nhau, người dùng có thể tùy biến tạo các thanh công cụ phù hợp nhất cho riêng mình. Nhóm 6- Lớp 1202INFO1311- Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 8 - Thanh công cụ: 2.3. Tạo ứng dụng với MS Visual C++ Từ menu File, người dùng chọn lệnh New để tạo mới một dự án( Project), một tập tin( File) hay một không gian làm việc( Workspace) khi đó hộp thoại xuất hiện như hình sau: Để tạo ứng dụng dạng hộp thoại dialog, người dùng cần làm như sau: Bước khởi đầu: Nhóm 6- Lớp 1202INFO1311- Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 9 - Bước 1: - Bước 2: Nhóm 6- Lớp 1202INFO1311- Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 10 [...]... Vũ Thị Lan Vũ Thị Liên (TK) Trần Nhật Linh Trần Thanh Long Doãn Thị Loan Tìm hiểu về MFC Làm Slide Xây dựng ứng dụng Xây dựng ứng dụng Tìm hiểu về MFC Xây dựng ứng dụng Xây dựng ứng dụng Nhóm 6- Lớp 1202INFO131 1Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 25 Nhóm 6- Lớp 1202INFO131 1Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 26 ... Nhóm 6- Lớp 1202INFO131 1Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 11 II XÂY DỰNG ỨNG DỤNG SỬ DỤNG MFC Xây dựng ứng dụng nhập dữ liệu và hiển thị kết quản trên hộp soạn thảo EDIT BOX 2.1.Giới thiệu Hầu hết các ứng dụng đang dùng đều có rất nhiều tình huống yêu cầu bạn nhập dữ liệu và hiển thị kết quả trên màn hình Sau đây nhóm chúng tôi xin giới thiệu ứng dụng nhập dữ liệu và hiển thị kết quả trên... CongdongCviet.com - Tailieu.Vn Nhóm 6- Lớp 1202INFO131 1Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 22 MỤC LỤC Nhóm 6- Lớp 1202INFO131 1Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 23 Cộng hòa xã hội chủ nghĩa Việt Nam Độc lập- Tự do- Hạnh phúc BIÊN BẢN HỌP NHÓM 1 Thời gian: 15h ngày 10/4/2012 2 Địa điểm: Sân thư viện 3 Thành phần: Nhóm trưởng, thư ký và các thành viên nhóm 5 4 Nội dung: - Nhóm trưởng... lập trình trên C++ thì việc xây dựng các ứng dụng trên Visual C++ là rất thuận lợi Khi thực hiện lập trình C/C++ thì việc trình bày đẹp hoàn toàn không đơn giản Nhưng đối với Nhóm 6- Lớp 1202INFO131 1Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 21 Visual C++ thì việc đó khá đơn giản Các bạn chỉ cần sử dụng các điều khiển hay xây dựng hay xây dựng một menu đưa vào ứng dụng của mình mà các mã lệnh... định hạn nộp bài cá nhân và hình thức nộp bài ( gửi qua mail cho nhóm trưởng) Buổi họp kết thúc vào hồi 15h30p cùng ngày Thư ký Nhóm 6- Lớp 1202INFO131 1Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC Nhóm trưởng 24 ĐÁNH GIÁ HOẠT ĐỘNG CỦA THÀNH VIÊN STT 1 2 3 4 5 6 7 8 9 Họ và tên Công việc Xếp loại Ghi chú Trần Thị Hường Xây dựng ứng dụng (NT) Nguyễn Thị Huyên Tìm hiểu về MFC Dương Hiền Huyền Hà Thị... Group Box và hai nút Radio Button Khi kích vào nút Rectangle, chương trình sẽ cho phép bạn nhập vào chiều dài và chiều rộng của hình chữ nhật như hình 1 Nhóm 6- Lớp 1202INFO131 1Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 12 - Khi kích vào nút Circle chương trình sẽ cho phép bạn nhập bán kính của đường tròn như hình 2 - Để hiển thị kết quả tính diện tích, bạn ấn vào nút Display - Kích vào nút Clear... UpdateData(FALSE) là rất cơ bản và quan trọng trong Visual C++ Nó có tác dụng như cặp mã lệnh Cin>> và Coutm_dArea=0; this->m_dLength=0; this->m_dWidth=0; Nhóm 6- Lớp 1202INFO131 1Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 20 UpdateData(FALSE); //cap nhat du lieu ra man hinh } C- KẾT LUẬN Tập hợp lớp thư viện MFC là công cụ hỗ trợ đắc lực cho người lập trình với đầy đủ các tiện ích giúp ta vét được mọi ngõ ngách của Windows phục vụ cho ứng dụng của mình Visual C++ là một ngôn ngữ lập trình dựa trên nền tảng... cần phải viết không quá dài dòng và phức tạp như trong C/C++ Đó chính là thế mạnh của Visual C++ trợ giúp đắc lực cho người lập trình trong khi xây dựng những đề án chương trình lớn hoặc trong kỹ thuật lập trình hệ thống Tuy nhiên, để hiểu và sử dụng được các lớp trong thư viện MFC phục vụ cho việc xây dựng các ứng dụng từ đơn giản đến phức tạp thì đòi hỏi thời gian tìm hiểu nghiên cứu kỹ càng Trong khuôn... CAreaDlg::OnSysCommand(UINT nID, LPARAM lParam) Nhóm 6- Lớp 1202INFO131 1Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 17 { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon For MFC applications using the document/view model, // this is automatically . Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 10 - Bước 3: - Bước 4: - Bước kết thúc: Nhóm 6- Lớp 1202INFO1311- Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 11 II. XÂY DỰNG ỨNG. msvcrtX.dll và msvcppX.dll ( tùy phiên bản của VC++). Nhóm 6- Lớp 1202INFO1311- Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC 5 + Đối với các ứng dụng MFC lớn, việc làm giảm tốc độ của ứng dụng. MFC có đầy đủ các tiện ích xứng đáng là lựa chọn của bạn. Sau đây chúng ta sẽ cùng tìm hiểu về MFC và xây dựng một ứng dụng đơn giản sử dụng ứng dụng này. Nhóm 6- Lớp 1202INFO1311- Tìm hiểu