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 liệu
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 diện tài liệu đơ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.
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.
Giao diện nhiều tài liệu (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.
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.
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ả |
1 | Chuỗ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ả |
1 | Nhận chiều dài Trả về số ký tự trong một đối tượng CString. |
2 | Khô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. |
3 | Trống rỗng Buộc một chuỗi có độ dài bằng 0. |
4 | Có được một Trả về ký tự tại một vị trí được chỉ định. |
5 | bộ Đặ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ả |
1 | So sánh So sánh hai chuỗi (phân biệt chữ hoa chữ thường). |
2 | So 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ả |
1 | giữa Trích xuất phần giữa của một chuỗi (như hàm Basic MID$). |
2 | Bê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$). |
4 | bao gồm khoảng cách Trích xuất các ký tự từ chuỗi, nằm trong bộ ký tự đã cho. |
5 | Khoả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ả |
1 | MakeUpper Chuyển đổi tất cả các ký tự trong chuỗi này thành ký tự hoa. |
2 | MakeLower Chuyển đổi tất cả các ký tự trong chuỗi này thành ký tự chữ thường. |
3 | MakeReverse Đảo ngược các ký tự trong chuỗi này. |
4 | Định dạng Định dạng chuỗi như sprintf. |
5 | TrimLeft Cắt bỏ các ký tự khoảng trắng ở đầu chuỗi. |
6 | TrimRight 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ả |
1 | Tì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. |
2 | Tì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. |
3 | Tì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ả |
1 | Nhận bộ đệm Trả về một con trỏ tới các ký tự trong CString. |
2 | GetBufferSetChiề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. |
3 | Bộ đệm phát hành Giải phóng quyền kiểm soát bộ đệm do GetBuffer trả về |
4 | Miễ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. |
5 | Bộ đệm khóa Tắt tính năng đếm tham chiếu và bảo vệ chuỗi trong bộ đệm. |
6 | Mở 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ả |
1 | AllocSysString Phân bổ BSTR từ dữ liệu CString. |
2 | SetSysString Đặt đối tượng BSTR hiện có với dữ liệu từ đối tượng CString. |
3 | chuỗ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 –
Tạo chuỗi
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.
Chuỗi rỗng
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.
nối chuỗi
Để 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.
Chiều dài chuỗi
Để 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.
So sánh chuỗi
Để 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.