mfc

Trong chương này, chúng ta sẽ đề cập đến các Hộp thoại. Các ứng dụng dành cho Windows thường xuyên giao tiếp với người dùng thông qua các hộp thoại. Lớp CDialog cung cấp một giao diện để quản lý các hộp thoại. Trình chỉnh sửa hộp thoại Visual C++ giúp dễ dàng thiết kế hộp thoại và tạo tài nguyên mẫu hộp thoại của chúng.

  • Tạo một đối tượng hộp thoại là một hoạt động gồm hai giai đoạn –
    • Xây dựng đối tượng hộp thoại.
    • Tạo cửa sổ hộp thoại.

Chúng ta hãy xem xét một ví dụ đơn giản bằng cách tạo một dự án Win32 mới.

Bước 1 – Mở Visual studio và nhấp vào tùy chọn menu Tệp → Mới → Dự án.

Bước 2 – Bây giờ bạn có thể thấy hộp thoại Dự án mới.

MFC - Hộp Thoại

Bước 3 – Từ ngăn bên trái, chọn Mẫu → Visual C++ → Win32.

Bước 4 – Trong ngăn giữa, chọn Dự án Win32.Bước 5 – Nhập tên dự án ‘MFCDialogDemo’ vào trường Tên và nhấp vào OK để tiếp tục. Bạn sẽ thấy hộp thoại sau.

MFC - Hộp Thoại

Bước 6 – Nhấp vào Tiếp theo.

MFC - Hộp Thoại

Bước 7 – Chọn các tùy chọn được hiển thị trong hộp thoại ở trên và nhấp vào Kết thúc.

MFC - Hộp Thoại

Bước 8 – Một dự án trống được tạo.

Bước 9 – Để biến nó thành dự án MFC, nhấp chuột phải vào dự án và chọn Thuộc tính.

MFC - Hộp Thoại

Bước 10 – Trong phần bên trái, nhấp vào Thuộc tính cấu hình → Chung.

Bước 11 – Chọn tùy chọn Use MFC in Shared DLL trong phần Project Defaults và nhấp vào OK.

Bước 12 – Thêm tệp nguồn mới.

Bước 13 – Nhấp chuột phải vào Dự án của bạn và chọn Thêm → Mục mới.

Bước 14 – Trong phần Mẫu, nhấp vào Tệp C++ (.cpp)

MFC - Hộp Thoại

Bước 15 – Đặt Tên là Ví dụ và nhấp vào Thêm.Bước 16 – Để tạo một ứng dụng, chúng ta cần thêm một lớp và lấy nó từ CWinApp của MFC.

#include <afxwin.h>

class CExample : public CWinApp {
   public:
      BOOL InitInstance();
};

To hp thoi

Bước 1 − Để tạo hộp thoại, nhấp chuột phải vào thư mục Tệp tài nguyên trong trình khám phá giải pháp và chọn Thêm → Tài nguyên.

MFC - Hộp Thoại

Bước 2 – Trong hộp thoại Thêm tài nguyên, chọn Hộp thoại và nhấp vào Mới.

Bước 3 – Một hộp thoại yêu cầu một số chuẩn bị trước khi thực sự tạo nó theo chương trình.

Bước 4 – Trước tiên, một hộp thoại có thể được tạo thủ công dưới dạng tệp văn bản (trong tệp tài nguyên).

Bước 5 – Bây giờ bạn có thể thấy tệp MFCDialogDemo.rc được tạo trong Tệp tài nguyên.

MFC - Hộp Thoại

Bước 6 – Tệp tài nguyên được mở trong designer. Điều tương tự có thể được mở dưới dạng tệp văn bản. Nhấp chuột phải vào tệp tài nguyên và chọn Mở bằng.

MFC - Hộp Thoại

Bước 7 – Chọn trình chỉnh sửa Mã nguồn (Văn bản) và nhấp vào nút Thêm.

MFC - Hộp Thoại

Bước 8 – Quay lại trình thiết kế và nhấp chuột phải vào hộp thoại và chọn Thuộc tính.

MFC - Hộp Thoại

Bước 9 – Bạn cần chọn trong số nhiều tùy chọn.

Bước 10 – Giống như hầu hết các điều khiển khác, hộp thoại phải được xác định. Mã định danh (ID) của hộp thoại thường bắt đầu bằng IDD_, Hãy để chúng tôi thay đổi ID thành IDD_EXAMPLE_DLG.

V trí hp thoi

Một hộp thoại phải được đặt “thực tế” trên một ứng dụng. Bởi vì hộp thoại thường được tạo dưới dạng cấp độ gốc của các điều khiển khác, nên vị trí của nó phụ thuộc vào mối quan hệ của nó với cửa sổ cấp độ gốc hoặc với màn hình nền.

Nếu bạn nhìn và cửa sổ Thuộc tính, bạn sẽ thấy hai trường X Pos và Y Pos.

MFC - Hộp Thoại
  • X là khoảng cách từ viền trái của màn hình đến viền trái của hộp thoại.
  • Y là khoảng cách từ viền trên của màn hình đến viền trên của hộp thoại.

Theo mặc định, các trường này được đặt thành không. Bạn cũng có thể thay đổi như hình trên.

Nếu bạn chỉ định hai kích thước này là 0, thì đường viền bên trái và trên cùng của hộp thoại sẽ được đặt để đối tượng xuất hiện ở giữa màn hình.

Kích thước hp thoi

Kích thước của một hộp thoại đề cập đến chiều rộng và chiều cao của nó. Bạn có thể thay đổi kích thước chiều rộng và chiều cao với sự trợ giúp của chuột trong cửa sổ thiết kế.

MFC - Hộp Thoại

Bạn có thể thấy những thay đổi về chiều rộng và chiều cao trên Thanh trạng thái.

Phương pháp hp thoi

Lớp cơ sở dùng để hiển thị hộp thoại trên màn hình là lớp CDialog. Để tạo một hộp thoại, chúng ta cần lấy một lớp từ CDialog. Bản thân lớp CDialog cung cấp ba hàm tạo như sau –

CDialog();
CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
CDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);

Hãy để chúng tôi tạo một lớp CExampleDlg khác và lấy nó từ CDialog. Chúng tôi sẽ triển khai hàm hủy hàm tạo mặc định của nó như trong đoạn mã sau.

class CExampleDlg : public CDialog {
   public:
      enum { IDD = IDD_EXAMPLE_DLG };
   
      CExampleDlg();
      ~CExampleDlg();
};

CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {

}

CExampleDlg::~CExampleDlg() {

}

Chúng ta cần khởi tạo hộp thoại này trên phương thức CExample::InitInstance() như trong đoạn mã sau.

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   
   return TRUE;
}

Hp thoi phương thc

Có hai loại hộp thoại – modeless và modal . Các hộp thoại modal và modeless khác nhau bởi quy trình được sử dụng để tạo và hiển thị chúng.

Hp thoi Modeless

  • Đối với hộp thoại không chế độ, bạn phải cung cấp hàm tạo công khai của riêng mình trong lớp hộp thoại của mình.
  • Để tạo một hộp thoại không chế độ, hãy gọi hàm tạo công khai của bạn và sau đó gọi hàm Tạo thành viên của đối tượng hộp thoại để tải tài nguyên hộp thoại.
  • Bạn có thể gọi Tạo trong hoặc sau khi gọi hàm tạo. Nếu tài nguyên hộp thoại có thuộc tính WS_VISIBLE, hộp thoại sẽ xuất hiện ngay lập tức.
  • Nếu không, bạn phải gọi hàm thành viên ShowWindow của nó.

Hp thoi phương thc

  • Để tạo hộp thoại phương thức, hãy gọi một trong hai hàm tạo công khai được khai báo trong CDialog.
  • Tiếp theo, gọi hàm thành viên DoModal của đối tượng hộp thoại để hiển thị hộp thoại và quản lý tương tác với nó cho đến khi người dùng chọn OK hoặc Hủy.
  • Sự quản lý này của DoModal là điều làm cho hộp thoại trở nên có phương thức. Đối với hộp thoại phương thức, DoModal tải tài nguyên hộp thoại.

Bước 1 − Để hiển thị hộp thoại dưới dạng phương thức, trong sự kiện CExample::InitInstance() gọi phương thức DoModal() sử dụng biến hộp thoại của bạn −

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   myDlg.DoModal();
   return TRUE;
}

Bước 2 – Đây là phần triển khai hoàn chỉnh của tệp Example.cpp.

#include <afxwin.h>
#include "resource.h"

class CExample : public CWinApp {
   public:
      BOOL InitInstance();
};
   
class CExampleDlg : public CDialog {
   public:
      enum { IDD = IDD_EXAMPLE_DLG };
   
      CExampleDlg();
     ~CExampleDlg();
};

CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {

}

CExampleDlg::~CExampleDlg() {

}

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   myDlg.DoModal();
   return TRUE;
}
CExample MyApp;

Bước 3 – Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy hộp thoại sau.

MFC - Hộp Thoại

Ứng dụng dựa trên hộp thoại (xem thêm)

Để lại một bình luận