mfc

Kiến trúc Tài liệu/Chế độ xem là nền tảng được sử dụng để tạo các ứng dụng dựa trên thư viện Microsoft Foundation Classes. Nó cho phép bạn phân biệt các phần khác nhau cấu thành một chương trình máy tính bao gồm những gì người dùng xem như một phần của ứng dụng của bạn và tài liệu mà người dùng sẽ làm việc trên đó. Điều này được thực hiện thông qua sự kết hợp của các lớp riêng biệt hoạt động như một tập hợp.

Các phần tạo nên kiến ​​trúc Tài liệu/Chế độ xem là một khung, một hoặc nhiều tài liệu và dạng xem. Kết hợp lại với nhau, các thực thể này tạo nên một ứng dụng có thể sử dụng được.

Lượt xem

Chế độ xem là nền tảng mà người dùng đang làm việc để thực hiện công việc của mình. Để cho phép người dùng làm bất cứ điều gì trên một ứng dụng, bạn phải cung cấp một dạng xem, là một đối tượng dựa trên lớp CView. Bạn có thể sử dụng trực tiếp một trong các lớp bắt nguồn từ CView hoặc bạn có thể lấy lớp tùy chỉnh của riêng mình từ CView hoặc một trong các lớp con của nó.

Tài liu

Một tài liệu tương tự như một cái xô. Đối với một ứng dụng máy tính, một tài liệu chứa dữ liệu của người dùng. Để tạo phần tài liệu của kiến ​​trúc này, bạn phải lấy một đối tượng từ lớp CDocument.

Khung

Như tên gợi ý, khung là sự kết hợp của các khối xây dựng, cấu trúc và đường viền của một mục. Khung mang lại sự hiện diện “vật lý” cho cửa sổ. Nó cũng xác định vị trí của một đối tượng liên quan đến màn hình Windows.

Giao din tài liu đơn (SDI)

Biểu thức Giao diện tài liệu đơn hoặc SDI đề cập đến một tài liệu chỉ có thể hiển thị một chế độ xem cho người dùng. Điều này có nghĩa là ứng dụng không thể hiển thị nhiều tài liệu cùng một lúc. Nếu bạn muốn xem một loại tài liệu khác của ứng dụng hiện tại, bạn phải tạo một phiên bản khác của ứng dụng. Notepad và WordPad là những ví dụ về ứng dụng SDI.

Chúng ta hãy xem xét một ví dụ đơn giản về giao diện tài liệu đơn lẻ hoặc SDI bằng cách tạo một ứng dụng dựa trên hộp thoại MFC mới.

Bước 1 – Hãy để chúng tôi tạo Ứng dụng MFC MFCDIDemo mới với các cài đặt được đề cập bên dưới.

mfc

Bước 2 – Chọn Tài liệu đơn từ Loại ứng dụng và tiêu chuẩn MFC từ Kiểu dự án.

Bước 3 – Nhấp vào Kết thúc để Tiếp tục.Bước 4 – Khi dự án được tạo, hãy chạy ứng dụng và bạn sẽ thấy đầu ra sau.

mfc

Giao din nhiu tài liu (MDI)

Ứng dụng được gọi là Giao diện Nhiều Tài liệu hoặc MDI, nếu người dùng có thể mở nhiều tài liệu trong ứng dụng mà không cần đóng tài liệu đó. Để cung cấp chức năng này, ứng dụng cung cấp một khung chính đóng vai trò là khung chính của chương trình máy tính. Bên trong khung này, ứng dụng cho phép tạo các chế độ xem với các khung riêng lẻ, làm cho mỗi chế độ xem khác biệt với chế độ xem khác.

Chúng ta hãy xem xét một ví dụ đơn giản về giao diện nhiều tài liệu hoặc MDI bằng cách tạo một ứng dụng dựa trên hộp thoại MFC mới.

Bước 1 – Hãy để chúng tôi tạo Ứng dụng MFC MFCMDIDemo mới với các cài đặt được đề cập bên dưới.

mfc

Bước 2 – Chọn Nhiều tài liệu từ Loại ứng dụng và tiêu chuẩn MFC từ Kiểu dự án.

Bước 3 – Nhấp vào Kết thúc để Tiếp tục.

Bước 4 – Khi dự án được tạo, hãy chạy ứng dụng và bạn sẽ thấy đầu ra sau.

mfc

Bước 5 – Khi bạn nhấp vào Tệp → Tùy chọn menu mới, nó sẽ tạo một cửa sổ con khác như trong ảnh chụp nhanh sau đây.

Bước 6 – Trong các ứng dụng Giao diện Nhiều Tài liệu (MDI), có một khung chính cho mỗi ứng dụng. Trong trường hợp này, CMDIFrameWnd và một khung con dẫn xuất CMDIChildWnd cho mỗi tài liệu.

Ván MFC – Thanh Gỗ

Chuỗi là đối tượng đại diện cho chuỗi ký tự. Chuỗi ký tự kiểu C bắt nguồn từ ngôn ngữ C và tiếp tục được hỗ trợ trong C++.

  • Chuỗi này thực sự là một mảng ký tự một chiều được kết thúc bằng ký tự null ‘\0’.
  • Một chuỗi kết thúc null chứa các ký tự bao gồm chuỗi theo sau là một null.

Đây là ví dụ đơn giản về mảng ký tự.

char word[12] = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '\0' };

Sau đây là một cách khác để đại diện cho nó.

char word[] = "Hello, World";

Thư viện Microsoft Foundation Class (MFC) cung cấp một lớp để thao tác chuỗi được gọi là CString . Sau đây là một số tính năng quan trọng của CString.

  • CString không có lớp cơ sở.
  • Một đối tượng CString bao gồm một chuỗi ký tự có độ dài thay đổi.
  • CString cung cấp các hàm và toán tử sử dụng cú pháp tương tự như cú pháp của Basic.
  • Các toán tử nối và so sánh, cùng với việc quản lý bộ nhớ được đơn giản hóa, làm cho các đối tượng CString dễ sử dụng hơn các mảng ký tự thông thường.

Đây là hàm tạo của CString.

Sơ Không.Phương pháp & Mô tả
1Chuỗi C Xây dựng các đối tượng CString theo nhiều cách khác nhau

Dưới đây là danh sách các Phương thức mảng –

Sơ Không.Phương pháp & Mô tả
1Nhận chiều dài Trả về số ký tự trong một đối tượng CString.
2Không có sản phẩm nào Kiểm tra xem đối tượng CString có chứa ký tự nào không.
3Trống rỗng Buộc một chuỗi có độ dài bằng 0.
4Có được một Trả về ký tự tại một vị trí được chỉ định.
5bộ Đặt một ký tự tại một vị trí được chỉ định.

Dưới đây là danh sách các Phương pháp So sánh –

Sơ Không.Phương pháp & Mô tả
1So sánh So sánh hai chuỗi (phân biệt chữ hoa chữ thường).
2So sánhKhông có trường hợp So sánh hai chuỗi (không phân biệt chữ hoa chữ thường).

Dưới đây là danh sách các Phương thức trích xuất –

Sơ Không.Phương pháp & Mô tả
1giữa Trích xuất phần giữa của một chuỗi (như hàm Basic MID$).
2Bên trái Trích xuất phần bên trái của một chuỗi (như hàm LEFT$ cơ bản).
3Đúng Trích xuất phần bên phải của một chuỗi (như hàm Basic RIGHT$).
4bao gồm khoảng cách Trích xuất các ký tự từ chuỗi, nằm trong bộ ký tự đã cho.
5Khoảng cách Loại trừ Trích xuất các ký tự từ chuỗi không có trong bộ ký tự đã cho.

Dưới đây là danh sách các Phương thức chuyển đổi.

Sơ Không.Phương pháp & Mô tả
1MakeUpper Chuyển đổi tất cả các ký tự trong chuỗi này thành ký tự hoa.
2MakeLower Chuyển đổi tất cả các ký tự trong chuỗi này thành ký tự chữ thường.
3MakeReverse Đảo ngược các ký tự trong chuỗi này.
4Định dạng Định dạng chuỗi như sprintf.
5TrimLeft Cắt bỏ các ký tự khoảng trắng ở đầu chuỗi.
6TrimRight Cắt bỏ các ký tự khoảng trắng ở cuối chuỗi.

Dưới đây là danh sách các Phương pháp Tìm kiếm.

Sơ Không.Phương pháp & Mô tả
1Tìm thấy Tìm một ký tự hoặc chuỗi con bên trong một chuỗi lớn hơn.
2Tìm ngược Tìm một ký tự bên trong một chuỗi lớn hơn; bắt đầu từ cuối.
3TìmMột Của Tìm ký tự phù hợp đầu tiên từ một tập hợp.

Dưới đây là danh sách các Phương thức Truy cập Bộ đệm.

Sơ Không.Phương pháp & Mô tả
1Nhận bộ đệm Trả về một con trỏ tới các ký tự trong CString.
2GetBufferSetChiều dài Trả về một con trỏ tới các ký tự trong CString, cắt bớt theo độ dài đã chỉ định.
3Bộ đệm phát hành Giải phóng quyền kiểm soát bộ đệm do GetBuffer trả về
4Miễn phíThêm Loại bỏ bất kỳ chi phí hoạt động nào của đối tượng chuỗi này bằng cách giải phóng bất kỳ bộ nhớ bổ sung nào được phân bổ trước đó cho chuỗi.
5Bộ đệm khóa Tắt tính năng đếm tham chiếu và bảo vệ chuỗi trong bộ đệm.
6Mở khóa bộ đệm Cho phép đếm tham chiếu và giải phóng chuỗi trong bộ đệm.

Dưới đây là danh sách các Phương pháp dành riêng cho Windows.

Sơ Không.Phương pháp & Mô tả
1AllocSysString Phân bổ BSTR từ dữ liệu CString.
2SetSysString Đặt đối tượng BSTR hiện có với dữ liệu từ đối tượng CString.
3chuỗi tải Tải đối tượng CString hiện có từ tài nguyên Windows CE.

Sau đây là các thao tác khác nhau trên các đối tượng CString –

To chui

Bạn có thể tạo một chuỗi bằng cách sử dụng một chuỗi ký tự hoặc tạo một thể hiện của lớp CString.

BOOL CMFCStringDemoDlg::OnInitDialog() {

   CDialogEx::OnInitDialog();

   // Set the icon for this dialog. The framework does this automatically
   // when the application's main window is not a dialog
   SetIcon(m_hIcon, TRUE);         // Set big icon
   SetIcon(m_hIcon, FALSE);       // Set small icon

   CString string1 = _T("This is a string1");
   CString string2("This is a string2");

   m_strText.Append(string1 + L"\n");
   m_strText.Append(string2);

   UpdateData(FALSE);

   return TRUE; // return TRUE unless you set the focus to a control
}

Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy đầu ra sau.

mfc

Chui rng

Bạn có thể tạo một chuỗi trống bằng cách sử dụng một chuỗi ký tự trống hoặc bằng cách sử dụng phương thức CString::Empty(). Bạn cũng có thể kiểm tra xem một chuỗi có trống hay không bằng cách sử dụng thuộc tính Boolean isEmpty.

BOOL CMFCStringDemoDlg::OnInitDialog() {
   CDialogEx::OnInitDialog();

   // Set the icon for this dialog. The framework does this automatically
   // when the application's main window is not a dialog
   SetIcon(m_hIcon, TRUE);            // Set big icon
   SetIcon(m_hIcon, FALSE);           // Set small icon

   CString string1 = _T("");
   CString string2;
   string2.Empty();

   if(string1.IsEmpty())
      m_strText.Append(L"String1 is empty\n");
   else
      m_strText.Append(string1 + L"\n");
   
   if(string2.IsEmpty())
      m_strText.Append(L"String2 is empty");
   else
      m_strText.Append(string2);
   UpdateData(FALSE);
   return TRUE; // return TRUE unless you set the focus to a control
}

Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy đầu ra sau.

mfc

ni chui

Để nối hai hoặc nhiều chuỗi, bạn có thể sử dụng toán tử + để nối hai chuỗi hoặc phương thức CString::Append().

BOOL CMFCStringDemoDlg::OnInitDialog() {
   CDialogEx::OnInitDialog();

   // Set the icon for this dialog. The framework does this automatically
   // when the application's main window is not a dialog
   SetIcon(m_hIcon, TRUE);              // Set big icon
   SetIcon(m_hIcon, FALSE);              // Set small icon

   //To concatenate two CString objects
   CString s1 = _T("This ");           // Cascading concatenation
   s1 += _T("is a ");
   CString s2 = _T("test");
   CString message = s1;
   message.Append(_T("big ") + s2);
   // Message contains "This is a big test".

   m_strText = L"message: " + message;

   UpdateData(FALSE);

   return TRUE; // return TRUE unless you set the focus to a control
}

Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy đầu ra sau.

mfc

Chiu dài chui

Để tìm độ dài của chuỗi, bạn có thể sử dụng phương thức CString::GetLength(), phương thức này trả về số ký tự trong đối tượng CString.

BOOL CMFCStringDemoDlg::OnInitDialog() {
   CDialogEx::OnInitDialog();
   
   // Set the icon for this dialog. The framework does this automatically
   // when the application's main window is not a dialog
   SetIcon(m_hIcon, TRUE);              // Set big icon
   SetIcon(m_hIcon, FALSE);              // Set small icon

   CString string1 = _T("This is string 1");
   int length = string1.GetLength();
   CString strLen;

   strLen.Format(L"\nString1 contains %d characters", length);
   m_strText = string1 + strLen;

   UpdateData(FALSE);

   return TRUE; // return TRUE unless you set the focus to a control
}

Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy đầu ra sau.

mfc

So sánh chui

Để so sánh hai biến chuỗi, bạn có thể sử dụng toán tử ==

BOOL CMFCStringDemoDlg::OnInitDialog() {
   CDialogEx::OnInitDialog();
   
   // Set the icon for this dialog. The framework does this automatically
   // when the application's main window is not a dialog
   SetIcon(m_hIcon, TRUE);            // Set big icon
   SetIcon(m_hIcon, FALSE);          // Set small icon

   CString string1 = _T("Hello");
   CString string2 = _T("World");

   CString string3 = _T("MFC Tutorial");
   CString string4 = _T("MFC Tutorial");

   if (string1 == string2)
      m_strText = "string1 and string1 are same\n";
   else
      m_strText = "string1 and string1 are not same\n";

   if (string3 == string4)
      m_strText += "string3 and string4 are same";
   else
      m_strText += "string3 and string4 are not same";

   UpdateData(FALSE);

   return TRUE; // return TRUE unless you set the focus to a control
}

Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy đầu ra sau.

mfc

MFC – CARray (xem thêm)

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