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

Bài giảng lập trình trong window

106 640 3
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Lập trình windows
Tác giả Trần Ngọc Bảo
Trường học Đại Học Sư Phạm Tp. Hồ Chí Minh
Chuyên ngành Khoa Toán – Tin Học
Thể loại Bài giảng
Thành phố Hồ Chí Minh
Định dạng
Số trang 106
Dung lượng 2,38 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng lập trình trong window

Trang 1

Đại Học Sư Phạm Tp Hồ Chí Minh

Dialog Box Common Controls

Property Sheet

™ Tạo ứng dụng dạng Dialog Based

™ Tạo và xử lý các control trong dialog

Trang 2

NỘI DUNG

™ Giới thiệu về Dialog box

™ Cài đặt và xử lý các control trong dialog

Trang 3

Giới thiệu về dialog

Dialog application

Trang 4

Giới thiệu về dialog – Common dialog

Color dialog

Trang 5

Giới thiệu về dialog – Common dialog

Open file dialog

Trang 6

Giới thiệu về dialog – Common dialog

Fonts dialog

Trang 7

Giới thiệu về dialog – Property Sheet

Trang 8

Giới thiệu về dialog – Property Sheet

Trang 9

Tạo ứng dụng Dialog Based bằng AppWizard

™ Chọn menu File Æ New

™ Chọn Tab Projects

™ Chọn loại project “MFC AppWizard (exe)”

™ Đặt tên project trong ô “Project name”

™ Xác định đường dẫn thư mục trong “Location”

™ Step 1: Chọn loại ứng dụng “Dialog based”

™ Nh ấn “Finish” để kết thúc

™ Step 2: Ch ỉ chọn Option “3D controls”

Trang 10

Dialog based - Tạo ứng dụng bằng AppWizard

Trang 11

Dialog based - Tạo ứng dụng bằng AppWizard

Trang 12

Dialog based - Tạo ứng dụng bằng AppWizard

Trang 13

Dialog based - Tạo ứng dụng bằng AppWizard

Trang 14

Dialog based - Tạo ứng dụng bằng AppWizard

Trang 15

Dialog based - Tạo ứng dụng bằng AppWizard

Trang 16

Dialog based - Các thành phần của ứng dụng (1/3)

™ Các file chương trình: (abc là tên của ứng dụng)

ƒ abc.h: header file của file abc.cpp, chứa khai báo CabcApp để quản lý toàn bộ ứng dụng Lớp CabcApp kế thừa từ lớp

CWinApp của MFC

ƒ abcDlg.h: header file của file abcDlg.cpp, chứa khai báo CabcDlg để quản lý cửa sổ Dialog giao diện của ứng dụng Lớp CabcDlg kế thừa từ lớp CDialog của MFC

ƒ Resource.h: header file, chửa các hằng ID của các resource được định nghĩa trong file abc.rc

ƒ abc.cpp: cài đặt các hàm thành phần của lớp CabcApp

ƒ abc.rc : mô tả các resource của ứng dụng

ƒ abcDlg.cpp : cài đặt các hàm thành phần của lớp CabcDlg

Trang 17

Dialog based - Các thành phần của ứng dụng (2/3)

class CDialogBasedApp : public CWinApp

{ public:

CDialogBasedApp();

public:

virtual BOOL InitInstance();

DECLARE_MESSAGE_MAP() };

Trang 18

Dialog based - Các thành phần của ứng dụng (3/3)

class CDialogBasedDlg : public CDialog

virtual BOOL OnInitDialog();

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

DECLARE_MESSAGE_MAP()

Trang 19

Tạo và xử lý dialog

™ Th êm mới Dialog resource

™ Thi ết lập thuộc tính dialog

™ Khai b áo lớp CDialog

™ Th êm các control vào dialog

™ Hi ển thị dialog

™ X ử lý dialog

Trang 20

Thêm mới dialog resource

Dialog resource

Trang 21

Thêm mới dialog resource (tt)

Chọn mục Insert Dialog để thêm mới dialog resource vào ứng dụng

Trang 22

Thêm mới dialog resource (tt)

New dialog resource

Trang 23

Thêm mới dialog resource (tt)

Resource editor

Trang 24

Thêm mới dialog resource (tt)

Alignment

Control box

Trang 25

Xác lập thuộc tính của Dialog

Trang 26

Khai báo lớp quản lý dialog

Ctrl + W để khai báo lớp xử lý tương ứng

Trang 27

Khai báo lớp xử lý dialog

Ctrl + W để khai báo lớp xử lý tương ứng

Tên lớp

Lớp Kế thừa

Trang 28

Header file - SampleDlg.h

Trang 29

Source file - SampleDlg.cpp

Trang 30

Tạo và xử các control trong dialog

Control box

Trang 31

Xử lý control trong dialog box - EditText

Trang 32

Xử lý control trong dialog box - EditText

™ Th ông qua biến thành viên kiểu Value

Khai báo biến

Trang 33

Xử lý control trong dialog box - EditText

class CLoginDlg : public CDialog

Trang 35

Gán giá trị cho EditText

BOOL CLoginDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// TODO: Add extra initialization here

m_strUserName = “Nguyen Van A";

return TRUE; // return TRUE unless you set the

focus to a control

// EXCEPTION: OCX Property Pages should return FALSE

}

Trang 36

Gán giá trị cho EditText

Trang 37

Gán giá trị cho EditText

BOOL CLoginDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// TODO: Add extra initialization here

m_strUserName = “Nguyen Van A";

Trang 38

Gán giá trị cho EditText

UpdateData(FALSE);

Trang 39

Lấy giá trị từ EditText

void CLoginDlg::OnOK() {

// TODO: Add extra validation here

Trang 40

Lấy giá trị từ EditText

void CLoginDlg::OnOK() {

// TODO: Add extra validation here

CString strUserName;

UpdateData(TRUE);

strUserName = m_strUserName; MessageBox(strUserName);

CDialog::OnOK();

}

Kết quả strUserName = “Tran Van B”

Trang 41

EditText - Dữ liệu loại VALUE

Trang 42

Xử lý control trong dialog box - EditText

™ Th ông qua biến thành viên kiểu CEdit

Khai báo biến

Trang 43

Xử lý control trong dialog box - EditText

class CLoginDlg : public CDialog

//}}AFX_DATA_MAP

Trang 44

Gán giá trị cho EditText

BOOL CLoginDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// TODO: Add extra initialization here

m_edtUserName.SetWindowText("Nguyen Van A");

Trang 45

Lấy giá trị từ EditText

Trang 46

Lấy và gán giá trị cho EditText

// Gán giá trị vào EditText

CString strUserName=“Nguyen Van A”;

GetDlgItem(IDC_TXTUSERNAME)->SetWindowText(strUserName);

CDialog::OnOK();

}

Trang 47

Lấy và gán giá trị cho EditText

// Gán giá trị vào EditText

CString strUserName=“Nguyen Van A”;

pe->SetWindowText(strUserName);

CDialog::OnOK();

Trang 49

Ví dụ minh họa

Trang 50

Gọi dialog trong các hàm xử lý

Trang 51

Truyền và nhận dữ liệu với dialog

void CMyClass::ShowMyDlg()

{

CLoginDlg dlg;

//Truyền giá trị cho các biến trong dialog

int nRes = dlg.DoModal();

if (nRes == IDOK) {

//Nhận giá trị từ các biến trong dialog

}

}

#include “MyClass.h”

#include “LoginDlg.h”

Trang 52

Truyền và nhận dữ liệu với dialog

Trang 53

Xử lý control trong dialog box - EditText

class CLoginDlg : public CDialog

Trang 54

Truyền và nhận dữ liệu với dialog (tt)

Trang 55

Ví dụ minh họa

Trang 56

Đại Học Sư Phạm Tp Hồ Chí Minh

Dialog Box Common Controls

Property Sheet

Lập trình với Common Controls

Trang 57

NỘI DUNG

™ Lập trình với StaticText

™ Lập trình với Check Box

™ Lập trình với Radio button

™ Lập trình với Combobox

™ Lập trình với Listbox

™ Lập trình với Listview & Treeview

™ Lập trình với ActiveX control (3-party components)

Trang 58

Ví dụ về lập trình với common control

Viết chương trình nhập/xuất thông tin sinh viên, học

sinh, giáo viên,…từ tập tin

Trang 59

Th êm ActiveX control v ào ứng dụng

™ Chọn menu Project\Add to project\Components and

Controls

Thêm Windows Media Player control vào ứng dụng

Trang 60

Th êm ActiveX control v ào ứng dụng

Trang 61

Th êm ActiveX control v ào ứng dụng

Ứng dụng “nhúng” Windows Media Player

Trang 62

X ử lý control trong dialog box - Button

Trang 63

Vi ết lệnh xử lý Button Open

class CMediaDlg : public CDialog

{

//{{AFX_MSG(CMediaDlg)

afx_msg void OnBtnOpen();

afx_msg void OnBtnShow();

//{{AFX_MSG

}

BEGIN_MESSAGE_MAP(CMediaDlg, CDialog) //{{AFX_MSG_MAP(CMediaDlg)

ON_BN_CLICKED(IDC_BTN_OPEN, OnBtnOpen)

ON_BN_CLICKED(IDC_BTN_SHOW, OnBtnShow) //}}AFX_MSG_MAP

END_MESSAGE_MAP()

void CMediaDlg::OnBtnOpen()

{

// TODO: Add your control notification handler code here

CString strFileName = _T("C:\\Music\\Track01.MP3");

m_MediaPlayer.Open (strFileName);

}

Trang 64

Tạo hàm xử lý Button Open bằng Wizard

Trang 65

Đại Học Sư Phạm Tp Hồ Chí Minh

Dialog Box Common Controls

Property Sheet

Lập trình với Property Sheet

Trang 66

Các thành phần trong Property Sheet

Page 1

Sheet Page 2

Trang 67

Các thành phần trong Property Sheet

Page 1

Sheet

Trang 68

Các thành phần trong Property Sheet

Page 2

Sheet

Trang 69

Các thành phần trong Property Sheet

Trang 70

Thêm mới Property Sheet

Nhập tên lớp

Trang 71

Thêm mới Property Sheet (tt)

Trang 72

Thêm mới Property Sheet (tt)

Trang 73

Thêm mới Property Page

™ Thêm mới Dialog tương ứng với mỗi Page trong ResouceView

™ Khai báo lớp xử lý tương ứng với mỗi page, kế

thừa từ lớp CPropertyPage

™ Add các page vào Property Sheet

Trang 74

Thêm mới Property Page

Trang 75

Thêm mới Property Page

Trang 76

Khai báo lớp CMyPropertySheet

class CMyPropertySheet : public CPropertySheet

#include "MyPage1.h" // Added by ClassView

#include "MyPage2.h" // Added by ClassView

Trang 77

Khởi tạo CMyPropertySheet

CMyPropertySheet::CMyPropertySheet(UINT nIDCaption, CWnd*

pParentWnd, UINT iSelectPage)

:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)

pParentWnd, UINT iSelectPage)

:CPropertySheet(pszCaption, pParentWnd, iSelectPage)

{

AddPage(&m_myPage1);

AddPage(&m_myPage2);

}

Trang 78

Khởi tạo CMyPropertySheet

Trang 81

Truy ền và nhận dữ liệu với dialog

void CMyClass::ShowMyDlg()

{

CMyPropertySheet mySheet("Sheet Page Demo",this,0);

//Truyền giá trị cho các biến trong property sheet

int nRes = mySheet.DoModal();

Trang 82

// NOTE - the ClassWizard will add and remove mapping macros here.

ON_BN_CLICKED (ID_APPLY_NOW, OnApply)

//}}AFX_MSG_MAP END_MESSAGE_MAP()

class CMyPropertySheet : public CPropertySheet

{

afx_msg void OnApply ();

}

Trang 85

strHomePhone = m_strHomePhone;

…….

}

Trang 86

Xử lý dữ liệu trong dialog

class CMyName : public CObject

Trang 87

Chuy ển và nhận dữ liệu với dialog (tt)

void CMyClass::ShowMyDlg()

{

CMyName myName;

CMyPropertySheet mySheet("Sheet Page Demo",this,0);

//Truyền giá trị cho các biến trong property sheet

Trang 88

Xử lý dữ liệu trong dialog (tt)

class CMyName : public CObject

Trang 89

Xử lý dữ liệu trong dialog (tt)

Trang 90

Truyền và nhận dữ liệu với dialog (tt)

void CMyClass::ShowMyDlg()

{

CMyName myName;

CMyPropertySheet mySheet("Sheet Page Demo",this,0);

//Truyền giá trị cho các biến trong property sheet

Trang 91

Xử lý dữ liệu trong dialog (tt)

void CMyPage1::GetData(CMyName &myName)

Trang 93

Modeless Dialog Box

class CModelessDlg : public CDialog

virtual void OnOK();

virtual void OnCancel();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

Trang 94

Modeless Dialog Box (tt)

ShowWindow(SW_SHOW);

} }

}

Trang 95

Modeless Dialog Box – SendMessage

AfxGetMainWnd ()->SendMessage (WM_USER_APPLY, 0, (LPARAM) &my);

//AfxGetMainWnd ()->SendMessage (WM_USER_APPLY, 0, 0L);

}

Trang 96

LRESULT CMainFrame::OnApply (WPARAM wParam, LPARAM lParam)

Modeless Dialog Box – SendMessage (tt)

Trang 97

Modeless Dialog Box – SendMessage (tt)

#include <afxwin.h> // MFC core and standard components

#include <afxext.h> // MFC extensions

#include <afxdisp.h> // MFC Automation classes

#include <afxdtctl.h> // MFC support for Internet Explorer 4

Trang 98

Modeless Dialog Box – Show & Hide

Trang 99

Đại Học Sư Phạm Tp Hồ Chí Minh

Dialog Box Common Controls

Property Sheet

Lập trình với Common Dialog

Trang 100

Giới thiệu về dialog – Common dialog

Open file dialog

Trang 101

void CCommonDialogView::OnLButtonDown(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

CFileDialog fDlg( 1 ,NULL,NULL,OFN_HIDEREADONLY | OFN_FILEMUSTEXIST ,

"C Header Files (*.h)|*.h|C++ Header Files (*.hpp)|*.hpp||");

Trang 102

void CCommonDialogView::OnLButtonDown(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

Trang 103

Giới thiệu về dialog – Common dialog

Color dialog

Trang 104

Common dialog – Color Dialog

Trang 105

Giới thiệu về dialog – Common dialog

Fonts dialog

Ngày đăng: 16/08/2012, 14:31

TỪ KHÓA LIÊN QUAN

w