1. Trang chủ
  2. » Giáo án - Bài giảng

Chương 3 Lập trình C++ trên windows

16 789 1
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

Định dạng
Số trang 16
Dung lượng 238 KB

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

Nội dung

Chương 3: Lập trình C++ trên Windows Phương pháp OOP và trên Windows  Xây dựng lớp ứng dụng  Xây dựng lớp cửa sổ  Xử lý thông điệp trên cửa sổ  Một số thông điệp cơ bản... 3.1- Phươ

Trang 1

Chương 3: Lập trình C++ trên Windows

 Phương pháp OOP và trên Windows

 Xây dựng lớp ứng dụng

 Xây dựng lớp cửa sổ

 Xử lý thông điệp trên cửa sổ

 Một số thông điệp cơ bản

Trang 2

3.1- Phương pháp OOP và trên Windows

 Phương pháp lập trình hướng đối tượng

 Lập trình OOP so với lập trình cấu trúc

 Các khái niệm cơ bản trong lập trình hướng đối tượng

 Các kỹ thuật OOP trong C++: xây dựng lớp, thành viên, kế thừa, đối tượng và xử lý đối tượng, cơ chế ảo và đa hình,

 Thư viện MFC cung cấp OOP trên Windows <afxwin.h>

MFC

API Lõi của Windows

Programmer Calling MFC

Calling API

Trang 3

3.2- Xây dựng lớp ứng dụng

 Các thành phần chính ?

 Lớp ứng dụng kế thừa từ CWinApp:

 BOOL InitInstance ()

m_pMainWnd

m_pActiveWnd

m_hInstance

Chương trình

Khai báo thư viện

Xây dựng các lớp cho chương trình

Tạo đối tượng chương trình

MFC

CWinApp

C…

Chương trình

CT

Kế thừa

Trang 4

 Cách viết lớp chương trình ?

 Một số hàm MFC cơ bản ?

 AfxMessageBox( thông-báo [, kiểu ] );

 CWnd* AfxGetMainWnd (); …

class CT : public CWinApp

{ public : BOOL InitInstance () {

… Viết các lệnh khởi tạo chương trình …… return 1;

} };

3.2- Xây dựng lớp ứng dụng

Trang 5

 Một chương trình MFC đơn giản

3.2- Xây dựng lớp ứng dụng

CT a;

class CT : public CWinApp

{

pubic :

BOOL InitInstance ()

{

AfxMessageBox ( “Chuong trinh don gian” );

return 1;

}

};

#include< afxwin.h >

Chương trình MFC

Cơ chế đa hình và phương thức ảo

Trang 6

 Lớp cửa sổ kế thừa từ CFrameWnd:

 m_hWnd

 Create ( class, title );

 ShowWindow ( mode );

 UpdateWindow ();

 MoveWindow ( x,y, w,h / LPCRECT );

 GetWindowRect ( LPCRECT );

 GetClientRect ( LPCRECT );

 SetWindowText ( title );

 MessageBox ( text );

3.3- Xây dựng lớp cửa sổ

MFC

CFrameWnd

C…

Chương trình

CS

Kế thừa

CWinApp

CT

Trang 7

 Mẫu lập trình lớp cửa sổ

 Tạo đối tượng cửa sổ trong lớp ứng dụng

m_pMainWnd = new CS ;

3.3- Xây dựng lớp cửa sổ

class CS : public CFrameWnd

{ public :

CS () {

… Tạo và hiển thị cửa sổ lên màn hình … }

Lập trình các thành viên lớp cửa sổ

};

Trang 8

# include <afxwin.h>

//====================================================

class CS : public CFrameWnd

{ public :

};

//===================================================

class CT : public CWinApp

{ public :

BOOL InitInstance()

{

return 1;

}

};

//===================================================

CT a;

 Một chương trình có cửa sổ đơn giản

3.3- Xây dựng lớp cửa sổ

Trang 9

Xử lý các thông điệp đáp ứng yêu cầu người dùng

Lớp cửa sổ

Phương thức xử

lý thông điệp

3.4- Xử lý thông điệp trên cửa sổ

 Cơ chế xử lý thông điệp trong MFC ?

 Lớp có khai báo xử lý thông điệp ?

 Khai báo trong lớp : DECLARE_MESSAGE_MAP ()

 Cài đặt ngoài lớp :

BEGIN_MESSAGE_MAP ( derived, base ) …ánh-xạ-thông-điệp…

END_MESSAGE_MAP ()

 Mẫu phương thức xử lý thông điệp

afx_msg void On <Name> ( tham-số );

Hàng đợi thông điệp

Trang 10

MFC

API

#include<afxwin.h>

class CT : public CWinApp

{

.

};

class CS :public CFrameWnd

{

public:

(Xử lý thông điệp - Method)

};

CT a;

#include<windows.h>

int WINAPI WinMain( ) {

.

}

LRESULT CALLBACK hàmCS( ) {

(Xử lý thông điệp - IF)

}

Thư viện

Lớp cửa sổ vs Hàm cửa sổ

Lớp ứng dụng

vs Hàm chính Đối tượng CT

 So sánh giữa lập trình MFC & API ?

3.4- Xử lý thông điệp trên cửa sổ

Trang 11

Tên thông điệp Mẫu hàm xử lý thông điệp

WM_CLOSE

WM_DESTROY

OnClose();

OnDestroy();

WM_SIZING

WM_SIZE

OnSizing( UINT side, LPRECT rect );

OnSize( UINT type, int cx, int cy );

WM_MOVING

WM_MOVE

OnMoving( UINT side, LPRECT rect );

OnMove( int x, int y );

WM_ACTIVATE OnActivate( UINT state, CWnd *other, BOOL min); WM_TIMER OnTimer( UINT sh );

WM_KEYDOWN

WM_CHAR

WM_KEYUP

OnKeyDown( UINT c, UINT r, UINT f );

OnChar( UINT c, UINT r, UINT f );

OnKeyUp ( UINT c, UINT r, UINT f );

WM_MOUSEMOVE

WM_LBUTTONDOWN

WM_LBUTTONUP

OnMouseMove( UINT f, CPoint p );

OnLButtonDown( UINT f, CPoint p );

OnLButtonUp( UINT f, CPoint p );

 Một số thông điệp cơ bản ?

3.4- Xử lý thông điệp trên cửa sổ

Trang 12

class CS : public CFrameWnd

{ public:

void OnSizing (UINT s, LPRECT r)

{ char t[100];

sprintf(t,"Sizing is (left=%d,top=%d) & (right=%d,bottom=%d)", r->left,r->top,r->right,r->bottom);

SetWindowText(t);

}

DECLARE_MESSAGE_MAP()

};

BEGIN_MESSAGE_MAP( CS, CFrameWnd )

ON_WM_SIZING()

END_MESSAGE_MAP()

Hàm xử lý thông điệp

Khai báo lớp có ánh

xạ thông điệp

Ánh xạ các thông điệp

có xử lý 3.4- Xử lý thông điệp trên cửa sổ

 Ví dụ cách xử lý thông điệp trong MFC

Trang 13

 Các thông điệp bàn phím và mẫu hàm xử lý

WM_CHAR Nhấn các phím ký tự OnChar (UINT c, UINT r, UINT f);

WM_KEYDOWN Nhấn xuống các phím OnKeyDown (UINT c, UINT r, UINT f);

WM_KEYUP Nhả các phím OnKeyUp (UINT c, UINT r, UINT f);

 Ý nghĩa các tham số

UINT c : mã phím đã được gõ {VK_F1, ,F12, VK_HOME, VK_INSERT, }

UINT r : số lượng ký tự được sinh ra khi giữ phím

UINT f : các trạng thái khác của bàn phím

 A

WM_KEYDOWN

WM_CHAR

WM_KEYUP

OnKeyDown (c=65, )

OnChar (c=65, )

OnKeyUp (c=65, )

1 2 3

3.5- Một số thông điệp cơ bản

Trang 14

 Các thông điệp chuột và mẫu hàm xử lý

WM_MOUSEMOVE Di chuyển chuột OnMouseMove (UINT f,CPoint p);

WM_LBUTTONDOWN Nhấn nút trái OnLButtonDown (UINT f,CPoint p);

WM_LBUTTONUP Nhả nút trái OnLButtonUp (UINT f, CPoint p);

WM_RBUTTONDOWN Nhấn nút phải OnRButtonDown (UINT f,CPoint p);

WM_RBUTTONUP Nhả nút phải OnRButtonUp (UINT f, CPoint p);

WM_LBUTTONDBLCLK Nhấn đúp nút trái OnLButtonDblClk (UINT f, CPoint p);

WM_RBUTTONDBLCLK Nhấn đúp nút phải OnRButtonDblClk (UINT f, CPoint p);

 Ý nghĩa các tham số trong các hàm xử lý thông điệp trên

MK_MBUTTON, MK_RBUTTON, MK_SHIFT}

3.5- Một số thông điệp cơ bản

Trang 15

WM_LBUTTONDOWN

WM_LBUTTONUP

WM_MOUSEMOVE

WM_RBUTTONDOWN

WM_RBUTTONUP

3.5- Một số thông điệp cơ bản

Trang 16

 Phát sinh do thực hiện các thao tác cơ bản trên cửa sổ như: đóng, dịch chuyển, thay đổi kích thước,…

 Mẫu hàm xử lý

void OnSysCommand ( UINT id, LPARAM lp );

id là số hiệu lệnh, lp là tham số chứa thông tin của lệnh.

Bảng giá trị ý nghĩa tham số id ở trên

 Nhắc lại một số lệnh cơ bản

GetWindowRect( LPRECT rect );

GetClientRect( LPRECT rect );

ShowScrollBar(UINT bar, BOOL redraw );

CreateSolidCaret( width, height );

ShowCaret();

SetCaretPos( POINT p );

SetClassLong( HWND, index, new );

id Ý nghĩa

61458 Dịch chuyển

61443 Kéo lên

61458 Kéo xuống

61441 Kéo trái

61442 Kéo phải

61445 Kéo góc phải trên

61444 Kéo góc trái trên

61447 Kéo góc trái dưới

61448 Kéo góc phải dưới

3.5- Một số thông điệp cơ bản

Ngày đăng: 13/05/2014, 11:39

TỪ KHÓA LIÊN QUAN