Một trong những tính năng chính của ứng dụng đồ họa là trình bày các điều khiển và tài nguyên của Windows cho phép người dùng tương tác với máy. Ví dụ về các điều khiển mà chúng ta sẽ học là các nút, hộp danh sách, hộp tổ hợp, v.v.
Một loại tài nguyên chúng tôi đã giới thiệu trong bài học trước là menu. Các điều khiển và tài nguyên như vậy có thể khởi tạo thông báo của riêng chúng khi người dùng nhấp vào chúng. Thông báo phát ra từ điều khiển Windows hoặc tài nguyên được gọi là thông báo lệnh.
Chúng ta hãy xem xét một ví dụ đơn giản về thông báo Lệnh.
Để cung cấp cho ứng dụng của bạn khả năng tạo một tài liệu mới, lớp CWinApp cung cấp phương thức OnFileNew().
afx_msg void OnFileNew();
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_COMMAND(ID_FILE_NEW, CMainFrame::OnFileNew)
END_MESSAGE_MAP()
Đây là định nghĩa phương thức
void CMainFrame::OnFileNew() {
// Create New file
}
Tin nhắn bàn phím
Bàn phím là một đối tượng phần cứng được gắn vào máy tính. Theo mặc định, nó được sử dụng để nhập các ký hiệu, chữ cái và các ký tự khác có thể nhận dạng được trên một điều khiển. Mỗi phím trên bàn phím hiển thị một ký hiệu, một chữ cái hoặc tổ hợp các ký hiệu đó để cho biết mục đích sử dụng của phím đó. Người dùng thường nhấn một phím, phím này sẽ gửi tín hiệu đến chương trình.
Mỗi phím có một mã mà hệ điều hành có thể nhận ra. Mã này được gọi là mã khóa ảo .
Các mã khóa ảo như sau. Việc nhấn một phím sẽ khiến thông báo WM_KEYDOWN hoặc WM_SYSKEYDOWN được đặt trong thông báo chuỗi. Điều này có thể được định nghĩa như sau
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
Chúng ta hãy xem xét một ví dụ đơn giản.
Bước 1 – Đây là thông báo
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_CREATE()
ON_WM_KEYDOWN()
END_MESSAGE_MAP()
Bước 2 – Đây là cách triển khai OnKeyDown().
void CMainFrame::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) {
switch (nChar) {
case VK_RETURN:
MessageBox(L"You pressed Enter");
break;
case VK_F1:
MessageBox(L"Help is not available at the moment");
break;
case VK_DELETE:
MessageBox(L"Can't Delete This");
break;
default:
MessageBox(L"Whatever");
}
}
Bước 3 – Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy đầu ra sau.
Bước 4 – Khi bạn nhấn Enter, nó sẽ hiển thị thông báo sau.
Tin nhắn chuột
Chuột là một đối tượng khác được gắn vào máy tính cho phép người dùng tương tác với máy.
- Nếu nhấn nút chuột trái, thông báo ON_WM_LBUTTONDOWN sẽ được gửi. Cú pháp của tin nhắn này là –
- afx_msg void OnLButtonDown(UINT nFlags, điểm CPoint)
- Nếu nhấn nút chuột phải, thông báo ON_WM_RBUTTONDOWN sẽ được gửi. Cú pháp của nó là –
- afx_msg void OnRButtonDown(UINT nFlags, điểm CPoint)
- Tương tự Nếu thả chuột trái, thông báo ON_WM_LBUTTONUP sẽ được gửi. Cú pháp của nó là –
- afx_msg void OnLButtonUp(UINT nFlags, điểm CPoint)
- Nếu thả chuột phải, thông báo ON_WM_TBUTTONUP sẽ được gửi. Cú pháp của nó là –
- afx_msg void OnRButtonUp(UINT nFlags, điểm CPoint)
Chúng ta hãy xem xét một ví dụ đơn giản.
Bước 1 – Thêm hai hàm sau vào định nghĩa lớp CMainFrame như được hiển thị trong đoạn mã sau.
class CMainFrame : public CFrameWnd {
public:
CMainFrame();
protected:
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
DECLARE_MESSAGE_MAP()
};
Bước 2 – Thêm hai Bản đồ tin nhắn sau.
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_KEYDOWN()
ON_WM_LBUTTONDOWN()
ON_WM_RBUTTONUP()
END_MESSAGE_MAP()
Bước 3 – Đây là định nghĩa hàm.
void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point) {
CString MsgCoord;
MsgCoord.Format(L"Left Button at P(%d, %d)", point.x, point.y);
MessageBox(MsgCoord);
}
void CMainFrame::OnRButtonUp(UINT nFlags, CPoint point) {
MessageBox(L"Right Mouse Button Up");
}
Bước 4 – Khi bạn chạy ứng dụng này, bạn sẽ thấy đầu ra sau.
Bước 5 – Khi bạn nhấp vào OK, bạn sẽ thấy thông báo sau.
Bước 6 – Nhấp chuột phải vào cửa sổ này. Bây giờ, khi bạn thả nút chuột phải, nó sẽ hiển thị thông báo sau.
MFC – Điều khiển Activex
Bộ chứa điều khiển ActiveX là chương trình mẹ cung cấp môi trường cho điều khiển ActiveX (trước đây là OLE) chạy.
- Điều khiển ActiveX là điều khiển sử dụng các công nghệ Microsoft ActiveX.
- ActiveX không phải là ngôn ngữ lập trình, mà là một bộ quy tắc về cách ứng dụng chia sẻ thông tin.
- Các lập trình viên có thể phát triển các điều khiển ActiveX bằng nhiều ngôn ngữ khác nhau, bao gồm C, C++, Visual Basic và Java.
- Bạn có thể tạo một ứng dụng có khả năng chứa các điều khiển ActiveX có hoặc không có MFC, nhưng việc thực hiện với MFC sẽ dễ dàng hơn nhiều.
Chúng ta hãy xem xét ví dụ đơn giản về việc thêm các điều khiển ActiveX vào ứng dụng dựa trên hộp thoại MFC của bạn.
Bước 1 – Nhấp chuột phải vào hộp thoại trong cửa sổ thiết kế và chọn Chèn Điều khiển ActiveX.
Bước 2 – Chọn Microsoft Picture Clip Control và bấm OK.
Bước 3 – Thay đổi kích thước Picture control và trong cửa sổ Properties, nhấp vào trường Picture.
Bước 4 – Duyệt thư mục chứa Ảnh. Chọn bất kỳ hình ảnh.
Bước 5 – Khi bạn chạy ứng dụng này, bạn sẽ thấy đầu ra sau.
Chúng ta hãy xem xét một ví dụ đơn giản khác.
Bước 1 – Nhấp chuột phải vào hộp thoại trong cửa sổ thiết kế.
Bước 2 – Chọn Chèn Điều khiển ActiveX.
Bước 3 – Chọn Microsoft ProgressBar Control 6.0, nhấp vào OK.
Bước 4 – Chọn thanh tiến trình và đặt Hướng của nó trong Cửa sổ Thuộc tính thành 1 – ccOrientationVertical .
Bước 5 – Thêm biến điều khiển cho thanh Tiến trình.
Bước 6 – Thêm đoạn mã sau vào OnInitDialog()
m_progBarCtrl.SetScrollRange(0,100,TRUE);
m_progBarCtrl.put_Value(53);
Bước 7 – Khi bạn chạy lại ứng dụng này, bạn cũng sẽ thấy thanh tiến trình theo hướng Dọc.