MFC – Lesson1: Hello World!

VCplusplus_iconĐây là bài viết đầu tiên trong series hướng dẫn về lập trình VC++6 bằng MFC cho người bắt đầu. Thông qua các ví dụ đơn giản, mỗi bài sẽ cung cấp cho bạn những kiến thức cơ bản để bạn có thể bắt tay vào việc phát triển ứng dụng bằng VC++.

I. Nội dung:

–          Giới thiệu sơ lược về MFC và môi trường làm việc MS Visual C++6

–          Sử dụng AppWizard để tạo ứng dụng

–          Cài đặt mã lệnh xử lý sự kiện cho control

–          Làm quen với hộp thoại thông điệp (MessageBox)

II.  Sơ lược về MFC

MFC (Microsoft Foundation Classes) là một thư viện các lớp C++ được Microsoft cung cấp nhằm đơn giản hóa và hỗ trợ khả năng lập trình hướng đối tượng (OOP) với Windows API. MFC được xem là nền tảng ứng dụng cho phép công việc lập trình Windows nhanh chóng và dễ dàng. Kiến trúc Document/View của MFC phân tách dữ liệu và phần giao diện chương trình riêng biệt giúp cho việc phát triển và bảo trì được thuận lợi hơn.

Xem thêm tại đây: http://en.wikipedia.org/wiki/Microsoft_Foundation_Class_Library

III.   Giới thiệu giao diện MS Visual C++ 6

A.  Workspace:

vùng bên trái cửa sổ là Workspace, giúp quản lí các thành phần của dự án đang làm việc. Các thẻ bên dưới cho phép bạn xem cấu trúc của chương trình theo ba cách:

–       ClassView: Chứa các lớp được định nghĩa trong dự án, mỗi lớp chứa các hàm và thành viên của chúng.

–       ResourceView: Các tài nguyên của dự án như hộp thoại, icon, menu,…

–       FileView: Các tập tin của dự án được xếp nhóm dựa theo chức năng của mỗi tập tin

B. Vùng soạn thảo:

Nằm bên phải Workspace và chiếm phần lớn diện tích cửa sổ. Đây là vùng để bạn thiết kế các giao diện các đối tượng và soạn thảo mã lệnh,…

C.  Vùng kết xuất:

Nằm dưới vùng soạn thảo và Workspace, là nơi hiển thị các thông điệp xuất ra trong quá trình biên dịch và chạy chương trình.

IV.  Chương trình MFC đầu tiên: Hello World

A.  Mô tả:

Chương trình sẽ hiển thị giao diện như hình sau, khi click vào nút ‘Say Hello’ sẽ làm xuất hiện một hộp thông báo với nội dung ‘Hello World’.

HelloWorld

B. Tạo dự án với AppWizard:

Để tạo một dự án MFC mới, VC++ cung cấp một trình wizard để bạn thiết lập và tự động sinh mã nguồn cũng như các đối tượng cần thiết. Trong ví dụ này cũng như những ví dụ tiếp theo, bạn sẽ dùng chức năng này để tạo các dự án cho mình, và thiết kế chương trình thông qua làm việc với giao diện đồ họa là chính. Dĩ nhiên bạn có thể tự viết tất cả bằng code nhưng việc đó sẽ mất nhiều thời gian hơn và không nằm trong phạm vi của series này.

–       Khởi động chương trình VC++6, chọn menu File > New trong giao diện cửa sổ chính

–       Trong thẻ Projects của hộp thoại New chọn MFC AppWizard (exe).

–       Gõ HelloWorld vào trường Project name để đặt tên cho dự án, nhấn OK.

NewProject

–       Hộp thoại MFC AppWizard – Step 1 hiện ra.

Step1

–       Bước này cho phép bạn chọn 1 trong 3 loại ứng dụng:

  • Single document (SDI): giao diện đơn tài liệu (ví dụ: Notepad, Wordpad), chỉ cho phép mở và hiển thị mỗi lần một tài liệu.
  • Multiple documents (MDI): giao diện đa tài liệu, (Word, Excel), cho phép mở và làm việc đồng thời nhiều tài liệu một lúc.
  • Dialog based: hộp thoại không có menu, không hiển thị tài liệu (ví dụ CharacterMap)

–       Ở đây ta chọn Dialog based vì không làm việc với tài liệu và chỉ xử lý một nút lệnh đơn giản. Nhấn Next để chuyển qua Step 2.

Step2

  • About box: Chương trình sẽ cung cấp cho bạn một hộp thoại About nếu dấu kiểm này được chọn
  • Context-sensitive Help: Tùy chọn này giúp cho việc hiển thị phần Help tiện lợi hơn. Tùy thuộc vào ngữ cảnh của ứng dụng mà nội dung help tương ứng sẽ được mở.
  • 3D controls: hiển thị các control kiểu 3D.
  • Automation: nếu ứng dụng của bạn có thể được điều khiển bởi các ứng dụng khác thì đánh dấu chọn mục này (ví dụ các chương trình sử dụng macro như MS office).
  • ActiveX Controls: đánh dấu chọn nếu ứng dụng cần sử dụng các control ActiveX, sẽ trình bày trong bài sau.
  • Windows Sockets: bạn hãy tùy chọn này nếu ứng dụng của bạn cần kết nối Internet.

–       Bạn để mặc định như trên hình rồi nhấn Next qua Step 3.

Step3

–       Tùy chọn ‘Yes, please’ như trên hình sẽ giúp tạo ra các chú thích cho mã nguồn được tạo ra tự động. Để mặc định và nhấn Next.

Step4

–       Step 4 hiển thị các tập tin của các class sắp được tạo ra, bạn không cần thay đổi bất cứ gì trong hộp thoại này, nhấn Finish.

–       Hộp thoại New Project Information hiện ra hiển thị những thông tin về dự án mà bạn đã thiết lập ở các bước trước. Nhấn OK.

New Project Information

–       Sau bước này, chương trình tạo cho bạn một hộp thoại HelloWorld như bên dưới

NewForm

–       Bạn hãy vào Build>Build HelloWorld.exe để biên dịch và tạo ra tập tin chương trình. Sau đó chọn Build>Execute HelloWorld.exe để chạy thử.

  • Khi chọn Build thì chỉ những tập tin bị thay đổi mới được biên dịch lại, còn chọn Rebuild All thì sẽ biên dịch tất cả tập tin.
  • Có hai cách để bạn chạy chương trình, sử dụng phím tắt F5 để chạy chương trình nếu cần debug và Ctrl+F5 để chạy mà không cần debug.

–       Bạn có thể nhấn chuột trái vào icon của cửa sổ hoặc nhấn phải vào thanh tiêu đề để mở menu hệ thống và chọn ‘About HelloWorld…’, hộp thoại About mà chương trình tạo sẵn sẽ hiển thị.

C.  Thiết kế giao diện chương trình

Bạn đã có dự án mới của mình, hãy chuyển qua vùng Workspace và xem các mục được tạo ra trong ClassView, ResourceView và FileView. Tại phần ResourceView, bạn có thể mở rộng mục Dialog và thấy có 2 mục con là IDD_ABOUTBOX và IDD_HELLOWORLD_DIALOG. Đây chính là ID của hộp thoại About và hộp thoại HelloWorld. Để mở hộp thoại nào ra bạn chỉ cần nhấp đôi vào mục tương ứng.

ResourceView

ResourceView

–       Mở hộp thoại HelloWorld ra và xóa hết control trên đó, bao gồm nút OK, Cancel và nhãn ‘TODO: Place dialog controls here’.

–       Tại thanh công cụ Controls bạn chọn mục Button và vẽ lên form. (Nếu không thấy thanh Controls, bạn nhấn phải vào toolbar và chọn Controls).

–       Nhấn phải vào Button mới vẽ chọn Properties để thiết lập các thuộc tính.

DesignForm

–       Trong hộp thoại Push Button Properties, bạn có thể thấy mục ID của button đang chọn là IDC_BUTTON1, bạn giữ nguyên ID này và chỉnh sửa mục Caption là văn bản hiển thị trên button thành ‘Say Hello’.

–       Bây giờ bạn có thể chạy thử và nhấn nút ‘Say Hello’, dĩ nhiên không có gì xảy ra vì bạn chưa viết code xử lý cho nó. Bây giờ ta bắt đầu làm việc đó.

D.  Viết mã lệnh xử lý nút ‘Say Hello’

–       Nhấn phải vào button chọn ClassWizard (Ctrl+W)…Hộp thoại ClassWizard mở ra như sau:

ClassWizard

–       Tại thẻ Message Maps, bạn thấy có mục Class name chọn CHelloWorldDlg chính là lớp đại diện cho hộp thoại HelloWorld mà bạn đang thiết kế. Bởi vì nút ‘Say Hello’ nằm trong hộp thoại này nên bạn phải chọn đúng tên lớp thì phần Object IDs mới hiển thị ID của button mà ta cần thêm mã lệnh.

–       Chọn IDC_BUTTON1 trong Object IDs, khung Messages bên cạnh chọn sự kiện BN_CLICKED (sự kiện nhấn nút).

–       Nhấn nút Add Funtion… và hộp thoại Add Member Funtion hiện ra để bạn đặt tên cho sự kiện này. Ta để mặc định là OnButton1 và nhấn OK.

–       Nhấn nút Edit Code để mở phần soạn thảo cho hàm OnButton1. Bạn viết thêm vào trong hàm OnButton1 như sau:

void CHelloWorldDlg::OnButton1()

{

// TODO: Add your control notification handler code here

MessageBox(“Hello World!”);

}

–       Bạn cần chú ý là VC++ phân biệt chữ hoa thường, viết xong bạn hãy F5 chạy thử chương trình và nhấn nút ‘Say Hello’, kết quả sẽ hiển thị một hộp thông điệp chứa dòng chữ ‘Hello World’ như phần mô tả đã giới thiệu.

MsgHelloWorld

–       Ở đây bạn sử dụng hàm MessageBox() kèm theo tham số là một chuỗi để hiển thị hộp thông điệp. Đây là một hàm thông dụng hầu như được sử dụng trong hầu hết mọi ứng dụng và bạn cũng khá quen thuộc khi làm việc trên Windows.

https://yinyangit.wordpress.com

Advertisements

3 thoughts on “MFC – Lesson1: Hello World!

  1. sau hàm MessageBox(“kjhkh”) không xài được? Error 1 error C2664: ‘CWnd::MessageBoxW’ : cannot convert parameter 1 from ‘const char [4]’ to ‘LPCTSTR’ d:\study\ct117_chuyende3\vdch3\mfc_app\mfc_app\mfc_appdlg.cpp 169 1 mfc_app

    Trả lời

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s