1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Xây dựng ứng dụng dialog-based trên Visual C++ 6.0 ppt

14 429 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 422,48 KB

Nội dung

Xây dựng ứng dụng dialog-based Visual C++ 6.0 XÂY DỰNG ỨNG DỤNG DIALOG-BASED Văn Chí Nam – Nguyễn Đức Hồng Hạ Khoa Cơng nghệ Thơng tin, Trường ĐH KHTN TP.HCM (vcnam@fit.hcmuns.edu.vn, ndhha@fit.hcmuns.edu.vn) Phiên cập nhật ngày 12/10/2004 MỤC ĐÍCH Bài viết giúp cho người đọc làm quen thực thao tác dialog Bài viết cung cấp tham khảo dành cho số lớp đối tượng quen thuộc MFC GIỚI THIỆU SƠ NÉT Trong phần giới thiệu này, làm quen với vài lớp đối tượng bản, sở MFC Lớp CWnd Đây lớp tổng quát gặp nhiều lần trình làm việc dialog nói riêng ứng dụng MFC nói chung Lớp CWnd cung cấp chức cho tất lớp cửa sổ1 (các control, mainframe, view, dialog…) thư viện MFC EnableWindow BOOL EnableWindow( BOOL bEnable = TRUE ); GetFocus static CWnd* PASCAL GetFocus( ); Trả trỏ CWnd control nhận focus IsEnableWindow BOOL IsWindowEnabled( ) const; SetFocus Đặt focus cho đối tượng cửa sổ CWnd* SetFocus( ); Từ vị trí này, thuật ngữ cửa sổ hiểu chung cho đối tượng thuộc nhóm : dialog, control, view, mainframe… Xây dựng ứng dụng dialog-based Visual C++ 6.0 GetClientRect Trả toạ độ hình chữ nhật bao quanh cửa sổ void GetClientRect( LPRECT lpRect ) const; Ví dụ : CRect rect; pWnd->GetClientRect(&rect); MoveWindow Dịch chuyển, thay đổi kích cỡ cửa sổ void MoveWindow(int x, int y, int nWidth,int nHeight, BOOL bRepaint = TRUE ); void MoveWindow(LPCRECT lpRect,BOOL bRepaint = TRUE); Ví dụ : this->MoveWindow(100,100,400,400); CRect rect; rect.top = 100; rect.left = 100; rect.right = 500; rect.bottom = 500; this->MoveWindow(&rect); GetDlgItem Trả trỏ CWnd* cửa sổ dialog CWnd* GetDlgItem(int nID ) const; Ví dụ : CWnd *pWnd; pWnd = GetDlgItem(IDC_EDIT1); GetDlgCtrlID Trả ID cửa sổ dialog int GetDlgCtrlID( ) const; GetDlgItemInt UINT GetDlgItemInt(int BOOL bSigned = TRUE ) const; nID, BOOL* lpTrans = NULL, Xây dựng ứng dụng dialog-based Visual C++ 6.0 Trả giá trị số nguyên control Dialog (Dùng trường hợp không muốn nhận giá trị chuỗi số nguyên chuyển từ chuổi sang số) GetDlgItemText int GetDlgItemText(int nID, LPTSTR lpStr, int nMaxCount) const; int GetDlgItemText(int nID, CString& rString) const; Lấy chuỗi nội dung control Ví dụ : Lấy chuỗi nội dung control có ID IDC_EDIT1 dialog CString str; GetDlgItem(IDC_EDIT1, str); // str mang nội dung IDC_EDIT1 SetDlgItemText void SetDlgItemText(int nID, LPCTSTR lpszString); Đặt chuỗi nội dung cho control dialog GetWindowText Lấy nội dung cho đối tượng cửa sổ Ví dụ : Lấy nội dung cho đối tượng cửa sổ có ID IDC_TEXT CWnd * pWnd; CString str; pWnd = GetDlgItem(IDC_TEXT); pWnd->GetWindowText(str); SetWindowText Đặt nội dung cho đối tượng cửa sổ Ví dụ : Đặt nội dung cho đối tượng cửa sổ có ID IDC_TEXT CWnd * pWnd; CString str; pWnd = GetDlgItem(IDC_TEXT); pWnd->SetWindowText(“Hi ! Hello”); Lớp CString Tham khảo tài liệu “Sử dụng cấu trúc liệu đơn giản MFC” thầy Lu Buon Vinh (thelastsamuraitor@yahoo.ca) Xây dựng ứng dụng dialog-based Visual C++ 6.0 LƯU Ý TRONG THIẾT KẾ GIAO DIỆN Thứ tự tab control (Tab-Order) Các control dialog cần tổ chức theo thứ tự định nhằm tạo tiện lợi cho người sử dụng dùng bàn phím Người sử dụng sử dụng phím Tab bàn phím để dịch chuyển từ control đến control khác dialog Người thiết kế dialog cần ý đặc điểm thiết kế Các control phải có thứ tự tab Sử dụng phím tắt Ctrl-D để bật chức Tab Order (Có thể vào menu Layout\Tab Order) Lần lượt click chọn control theo thứ tự tăng dần thứ tự tab (Đừng quan tâm đến static text !) Xây dựng ứng dụng dialog-based Visual C++ 6.0 Dùng chức hiển thị dialog lúc thiết kế (Ctrl-T) để kiểm tra xem thứ tự tab control phù hợp chưa Canh chỉnh control Chức canh chỉnh Các chức canh chỉnh thực hiện: - Canh chỉnh hay nhiều control kích cỡ (chiều dài, chiều rộng, hai chiều) - Canh chỉnh hay nhiều control theo cạnh trái / phải / / control - Canh control theo chiều cao, chiều rộng dialog - Canh khoảng cách control theo chiều cao, chiều rộng dialog Nguyên tắc thực - Chọn lựa control cách nhấn chọn giữ phím Ctrl Shift - Control chọn làm chuẩn chọn sau - Chọn chức cần thực công cụ sau : Xây dựng ứng dụng dialog-based Visual C++ 6.0 LÀM QUEN VỚI BIẾN ĐẠI DIỆN Biến đại diện Biến đại diện giúp lập trình viên điều khiển, xác định, cập nhật giá trị control cách nhanh chóng, tiện lợi Có loại biến đại diện : biến đại diện kiểu control biến đại diện kiểu liệu Với biến đại diện kiểu control, thao tác biến thao tác đối tượng trực tiếp (có nghĩa dùng phương thức kèm với lớp đối tượng) Với biến đại diện kiểu liệu, xác định, cập nhật giá trị thể (Cùng control có kiểu liệu khác nhau, ví dụ, Edit Box, tạo biến đại diện kiểu CString, kiểu int, kiểu UINT… theo yêu cầu toán.) Xác định, cập nhật giá trị biến đại diện Sử dụng hàm UpdateData để xác định hay cập nhật giá trị biến đại diện Với UpdateData(TRUE), đưa giá trị hành control vào biến đại diện Với UpdateData(FALSE), cập nhật giá trị control giá trị hành biến đại diện Xây dựng ứng dụng dialog-based Visual C++ 6.0 Các bước tạo biến đại diện Bước : Sử dụng tab Member Variables ClassWizard để tạo biến đại diện cho control Bước : Chọn ID control cần đặt biến đại diện danh sách Control IDs Bước : Nhấn vào Add Variable để bắt đầu tạo Bước : Đặt tên biến ô Member variable name, chọn loại biến danh sách Category, chọn kiểu liệu biến danh sách Variable type Bước : Nhấn OK để đồng ý Nhìn lại kết thực Xây dựng ứng dụng dialog-based Visual C++ 6.0 VÍ DỤ MINH HOẠ Mơ tả Ứng dụng đơn giản mà xây dựng viết hình đăng nhập chương trình Người sử dụng nhập vào tên đăng nhập mật vào hộp thoại tương ứng Sau nhập xong, nhấn vào nút Dong Y để kiểm tra mật Nếu mật tên đăng nhập hợp lệ, người sử dụng nhận thông báo chúc mừng Ngược lại, người sử dụng phải tiếp tục nhập lại mật khẩu, tên đăng nhập Màn hình đăng nhập thể : Xây dựng ứng dụng dialog-based Visual C++ 6.0 Các bước tạo project Bước : Tạo project sử dụng MFC AppWizard Đặt tên cho project Demo Bước : Chọn loại ứng dụng Dialog-based Bước : Giữ nguyên giá trị mặc định (Lưu ý : thay đổi nội dung tiêu đề (title bar) Step Xây dựng ứng dụng dialog-based Visual C++ 6.0 Bước : Có thể nhấn Finish để kết thúc Các thông tin tổng hợp project hiển thị dialog cuối 10 Xây dựng ứng dụng dialog-based Visual C++ 6.0 Các bước thiết kế giao diện Chọn tab ResourceView phần Workspace Chọn dialog mong muốn thiết kế nhánh Dialog Kéo thả control đến vị trí mong muốn dialog Dialog Đăng nhập mơ tả phía cần dùng static text, edit box, button Đặt tên (ID) số control theo quy ước sau : STT Control Tên Edit box IDC_TENDANGNHAP Edit box IDC_MATKHAU Button IDC_DONGY Button Ghi IDC_THOAT Chọn style Password cho control Tạo biến đại diện Chúng ta cần xác định giá trị hộp Edit Box Tên đăng nhập Mật Do đó, đặt biến đại diện tương ứng với control ID IDC_MATKHAU Biến m_strMatKhau Kiểu CString IDC_TENDANGNHAP m_strTenDangNhap CString Ghi chu Mật Tên đăng nhập 11 Xây dựng ứng dụng dialog-based Visual C++ 6.0 Viết code Nhấn vào nút Dong Y Xử lý kiện BN_CLICKED button Dong Y Quan sát chỗ Visual C++ 6.0 tự động thêm vào (lập trình viên thêm tay vào vị trí viết hàm xử lý kiện riêng) Tập tin DemoDlg.cpp (thêm chỗ) void CDemoDlg::OnDongy() { // TODO: Add your control notification handler code here //Viết code thêm chỗ } BEGIN_MESSAGE_MAP(CDemoDlg, CDialog) //{{AFX_MSG_MAP(CDemoDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_DONGY, OnDongy) //}}AFX_MSG_MAP END_MESSAGE_MAP() Tập tin DemoDlg.h (thêm chỗ) // Generated message map functions //{{AFX_MSG(CDemoDlg) 12 Xây dựng ứng dụng dialog-based Visual C++ 6.0 virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnDongy(); //}}AFX_MSG DECLARE_MESSAGE_MAP() Trong phần xử lý việc nhấn vào nút Dong Y, phải cập nhật lại giá trị cho biến đại diện Sau đó, kiểm tra xem Tên đăng nhập (biến m_strTenDangNhap) mật (biến m_strMatKhau) có hợp lệ khơng Nếu khơng u cầu người sử dụng nhập lại UpdateData(TRUE); if (m_strTenDangNhap != "test" || m_strMatKhau != "test") { MessageBox("Ten dang nhap hoac mat khau khong hop le","Thong bao",MB_OK|MB_ICONEXCLAMATION); m_strMatKhau = ""; UpdateData(FALSE); return; } Nếu muốn trỏ tự động nhảy vào hộp Mật Khẩu người dùng gõ sai mật ta thêm vào đoạn mã sau : CWnd * pWnd; pWnd = GetDlgItem(IDC_MATKHAU); pWnd->SetFocus(); Tóm lại, hàm xử lý kiện nhấn vào button Dong Y sau : void CDemoDlg::OnDongy() { // TODO: Add your control notification handler code here UpdateData(TRUE); if (m_strTenDangNhap != "test" || m_strMatKhau != "test") { MessageBox("Ten dang nhap hoac mat khau khong hop le","Thong bao",MB_OK|MB_ICONEXCLAMATION); m_strMatKhau = ""; UpdateData(FALSE); CWnd * pWnd; pWnd = GetDlgItem(IDC_MATKHAU); pWnd->SetFocus(); return; } MessageBox("Chuc mung ban dang nhap cong","Thong bao"); } 13 Xây dựng ứng dụng dialog-based Visual C++ 6.0 Nhấn vào nút Cancel Trong hàm Cancel làm thao tác kết thúc Dialog Tuy nhiên, thêm vào chức hỏi người dùng có muốn kết thúc hay khơng Nếu thực muốn kết thúc cho phép kết thúc Để khỏi hình dialog, thêm vào dịng mã sau : CDialog::OnCancel(); Kiểm tra trả lời từ người dùng : int Result; Result = MessageBox("Ban co muon thoat khong ?","Thong bao",MB_YESNO|MB_ICONQUESTION); if (Result == IDYES) { //Thực cơng việc } Tóm lại, hàm xử lý kiện nhấn vào button Thoat sau : void CDemoDlg::OnThoat() { // TODO: Add your control notification handler code here int Result; Result = MessageBox("Ban co muon thoat khong ?","Thong bao",MB_YESNO|MB_ICONQUESTION); if (Result == IDYES) { CDialog::OnCancel(); } } 14 ... Category, chọn kiểu liệu biến danh sách Variable type Bước : Nhấn OK để đồng ý Nhìn lại kết thực Xây dựng ứng dụng dialog-based Visual C++ 6.0 VÍ DỤ MINH HOẠ Mô tả Ứng dụng đơn giản mà xây dựng viết hình... Hello”); Lớp CString Tham khảo tài liệu “Sử dụng cấu trúc liệu đơn giản MFC” thầy Lu Buon Vinh (thelastsamuraitor@yahoo.ca) Xây dựng ứng dụng dialog-based Visual C++ 6.0 LƯU Ý TRONG THIẾT KẾ GIAO... Demo Bước : Chọn loại ứng dụng Dialog-based Bước : Giữ nguyên giá trị mặc định (Lưu ý : thay đổi nội dung tiêu đề (title bar) Step Xây dựng ứng dụng dialog-based Visual C++ 6.0 Bước : Có thể nhấn

Ngày đăng: 12/12/2013, 21:15

HÌNH ẢNH LIÊN QUAN

Màn hình đăng nhập được thể hiện dưới đây : - Tài liệu Xây dựng ứng dụng dialog-based trên Visual C++ 6.0 ppt
n hình đăng nhập được thể hiện dưới đây : (Trang 8)
Ứng dụng đơn giản mà chúng ta sẽ xây dựng trong bài viết này làm ột màn hình đăng nhập trong một chương trình - Tài liệu Xây dựng ứng dụng dialog-based trên Visual C++ 6.0 ppt
ng dụng đơn giản mà chúng ta sẽ xây dựng trong bài viết này làm ột màn hình đăng nhập trong một chương trình (Trang 8)
Để thoát khỏi màn hình một dialog, thêm vào một dòng mã sau : CDialog::OnCancel(); - Tài liệu Xây dựng ứng dụng dialog-based trên Visual C++ 6.0 ppt
tho át khỏi màn hình một dialog, thêm vào một dòng mã sau : CDialog::OnCancel(); (Trang 14)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w