Bài giảng Lập trình Windows: Chương 3 - Lập trình C ++ trên Windows
lượt xem 7
download
Bài giảng Lập trình Windows Chương 3 Lập trình C++ trên Windows trình bày phương pháp OOP và trên Windows, xây dựng lớp ứng dựng lớp cửa sổ, xử lý thông điệp trên cửa sổ thông điệp cơ bản và một số thông điệp cơ bản.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình Windows: Chương 3 - Lập trình C ++ trên Windows
- 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ươ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 MFC Lõi của API Windows Programmer
- 3.2- Xây dựng lớp ứng dụng Các thành phần chính ? Chương trình Khai báo thư viện Xây dựng các lớp cho chương trình MFC Tạo đối tượng C… chương trình CWinApp … Lớp ứng dụng kế thừa từ CWinApp: Kế thừa BOOL InitInstance() m_pMainWnd CT m_pActiveWnd m_hInstance Chương trình
- 3.2- Xây dựng lớp ứng dụng Cách viết lớp chương trình ? class CT : public CWinApp { public: BOOL InitInstance() { ….. Viết các lệnh khởi tạo chương trình …… return 1; } }; Một số hàm MFC cơ bản ? AfxMessageBox( thông-báo [, kiểu ] ); CWinApp* AfxGetApp(); CWnd* AfxGetMainWnd(); …
- 3.2- Xây dựng lớp ứng dụng Một chương trình MFC đơn giản Chương trình MFC #include class CT : public CWinApp { pubic: BOOL InitInstance() Cơ chế đa hình và { phương thức ảo AfxMessageBox( “Chuong trinh don gian” ); return 1; } }; CT a;
- 3.3- Xây dựng lớp cửa sổ Lớp cửa sổ kế thừa từ CFrameWnd: MFC m_hWnd Create( class, title ); C… ShowWindow( mode ); CWinApp UpdateWindow(); … CFrameWnd MoveWindow( x,y, w,h / LPCRECT ); GetWindowRect( LPCRECT ); GetClientRect( LPCRECT ); Kế thừa SetWindowText( title ); MessageBox( text ); CT ... CS Chương trình
- 3.3- Xây dựng lớp cửa sổ Mẫu lập trình 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ổ ... }; 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ổ Một chương trình có cửa sổ đơn giản #include //==================================================== class CS : public CFrameWnd { public: CS() { Create( 0, “Chuong trinh MFC” ); ShowWindow(1); UpdateWindow(); } }; //=================================================== class CT : public CWinApp { public: BOOL InitInstance() { m_pMainWnd = new CS; return 1; } }; //=================================================== CT a;
- 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ửa sổ Hàng đợi thông điệp Xử lý các thông điệp đáp ứng yêu cầu người dùng Phương thức xử lý thông điệp Mẫu phương thức xử lý thông điệp afx_msg void On( tham-số ); 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()
- 3.4- Xử lý thông điệp trên cửa sổ So sánh giữa lập trình MFC & API ? MFC API #include Thư viện #include class CS :public CFrameWnd Lớp cửa sổ LRESULT CALLBACK hàmCS(...) { vs { public: Hàm cửa sổ (Xử lý thông điệp - IF) (Xử lý thông điệp - Method) } }; class CT : public CWinApp int WINAPI WinM ain( ... ) { Lớp ứng dụng { vs ........ ........ Hàm chính }; } CT a; Đối tượng CT
- 3.4- Xử lý thông điệp trên cửa sổ Một số thông điệp cơ bản ? Tên thông điệp Mẫu hàm xử lý thông điệp WM_CLOSE OnClose(); WM_DESTROY OnDestroy(); WM_SIZING OnSizing( UINT side, LPRECT rect ); WM_SIZE OnSize( UINT type, int cx, int cy ); WM_MOVING OnMoving( UINT side, LPRECT rect ); WM_MOVE OnMove( int x, int y ); WM_ACTIVATE OnActivate( UINT state, CWnd *other, BOOL min); WM_TIMER OnTimer( UINT sh ); WM_KEYDOWN OnKeyDown( UINT c, UINT r, UINT f ); WM_CHAR OnChar( UINT c, UINT r, UINT f ); WM_KEYUP OnKeyUp( UINT c, UINT r, UINT f ); WM_MOUSEMOVE OnMouseMove( UINT f, CPoint p ); WM_LBUTTONDOWN OnLButtonDown( UINT f, CPoint p ); WM_LBUTTONUP OnLButtonUp( UINT f, CPoint p ); … …
- 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 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); } Hàm xử lý thông điệp DECLARE_MESSAGE_MAP() }; Khai báo lớp có ánh xạ thông điệp BEGIN_MESSAGE_MAP( CS, CFrameWnd ) ON_WM_SIZING() ............................. Ánh xạ các thông điệp END_M ESSAGE_MAP() có xử lý
- 3.5- Một số thông điệp cơ bản WM_KEYDOWN OnKeyDown (c=65,...) 1 A 2 3 WM_CHAR OnChar (c=65,...) WM_KEYUP OnKeyUp (c=65,...) 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
- 3.5- Một số thông điệp cơ bản 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 UINT f: trạng thái các phím gồm các giá trị {MK_CONTROL, MK_LBUTTON, MK_MBUTTON, MK_RBUTTON, MK_SHIFT} CPoint p: tọa độ điểm nhấn chuột trên cửa sổ gồm {x, y}
- 3.5- Một số thông điệp cơ bản WM_LBUTTONDOWN OnLButtonDown(UINT, CPoint{x,y}) WM_LBUTTONUP OnLButtonUp( f=? , p={x,y} ) WM_RBUTTONDOWN OnRButtonDown( f=? , p={x,y} ) WM_RBUTTONUP WM_MOUSEMOVE OnRButtonUp( f=? , p={x,y} ) OnMouseMove( f=? , p={x,y} )
- 3.5- Một số thông điệp cơ bản 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 id Ý nghĩa Nhắc lại một số lệnh cơ bản 61458 Dịch chuyển GetWindowRect( LPRECT rect ); 61443 Kéo lên GetClientRect( LPRECT rect ); 61458 Kéo xuống ShowScrollBar(UINT bar, BOOL redraw ); 61441 Kéo trái CreateSolidCaret( width, height ); 61442 Kéo phải ShowCaret(); 61445 Kéo góc phải trên SetCaretPos( POINT p ); 61444 Kéo góc trái trên SetClassLong( HWND, index, new ); 61447 Kéo góc trái dưới 61448 Kéo góc phải dưới
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình Window: Chương 6 - Phan Trọng Tiến
35 p | 167 | 20
-
Bài giảng Lập trình Windows - Chương 3: Lập trình giao diện
196 p | 102 | 18
-
Bài giảng Lập trình Window: Chương 8 - Phan Trọng Tiến
45 p | 101 | 17
-
Bài giảng Lập trình Window: Chương 5 - Phan Trọng Tiến
42 p | 107 | 11
-
Bài giảng Lập trình Windows: Chương 4 - Lập trình đồ họa với thư viện GDI (Graphics Device Interface)
47 p | 123 | 9
-
Bài giảng Lập trình Window: Chương 4 - Phan Trọng Tiến
26 p | 95 | 8
-
Bài giảng Lập trình Windows - Chương 3: Lập trình C++ trên Windows (2016)
16 p | 74 | 8
-
Bài giảng Lập trình Windows - Chương 2: Lập trình với cửa sổ bằng API (2016)
10 p | 85 | 8
-
Bài giảng Lập trình Windows - Chương 1: Tổng quan lập trình Windows (2016)
6 p | 151 | 8
-
Bài giảng Lập trình Windows: Chương 2 - Giới thiệu về MFC, Visual C++ 6.0
61 p | 114 | 8
-
Bài giảng Lập trình Windows: Chương 1 - Một số khái niệm cơ bản
56 p | 126 | 6
-
Bài giảng Lập trình Windows - Chương 8: Lập trình đa luồng (2016)
9 p | 84 | 6
-
Bài giảng Lập trình Windows - Chương 4: Xử lý đồ họa và văn bản (2016)
13 p | 74 | 5
-
Bài giảng Lập trình Windows - Chương 5: Lập trình tài nguyên (2016)
16 p | 73 | 5
-
Bài giảng Lập trình Windows - Chương 6: Lập trình File & Print (2016)
7 p | 75 | 5
-
Bài giảng Lập trình Windows - Chương 9: Lập trình thư viện động (2016)
9 p | 77 | 5
-
Bài giảng Lập trình Windows - Chương 10: Lập trình Hook (2016)
6 p | 61 | 4
-
Bài giảng Lập trình Windows: Chương 3 - Dialog Box - Common Dialog - Property Sheet
25 p | 76 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn