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

Tổng quan lập trình hệ thống

154 584 2

Đ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

Cấu trúc

  • Lập trình hệ thống

  • Chương 1. Cơ sở lập trình hệ thống

  • 2. Hoạt động của ứng dụng

  • 3. Các khái niệm cơ bản

  • 3. Các khái niệm (tt)

  • Slide 6

  • Chương 2: Kiến trúc chương trình

  • Slide 8

  • Slide 9

  • 2. Ví dụ (HelloMsg)

  • Điểm vào chương trình: WinMain

  • Hàm MessageBox

  • 3. Mô hình Lập trình C/Windows

  • Ví dụ (HelloWin)

  • Ví dụ (tt)

  • Slide 16

  • Slide 17

  • Kết quả

  • Toàn cục về chương trình

  • Các lời gọi hàm

  • Các lời gọi hàm (tt)

  • Ký pháp Hungarian

  • Lớp cửa sổ

  • Cửa sổ (window)

  • Vòng lặp thông điệp

  • Thủ tục xử lý thông điệp

  • Một số thông điệp

  • Chương 3. Vẽ trên cửa sổ

  • 1. Painting and Repainting

  • 1.1. Thông điệp WM_PAINT

  • 1.1. Thông điệp WM_PAINT (tiếp)

  • 1.2. Valid & Invalid Rectangles

  • 2. GDI (Graphics Device Interface)

  • 2.1. Device Context (Ngữ cảnh thiết bị)

  • 2.1. Ngữ cảnh thiết bị (tt)

  • 2.2. Nhận handle device context

  • 2.2. Nhận handle device context (tt)

  • Slide 38

  • 2.3. Cấu trúc paint (PAINTSTRUCTURE)

  • 2.3. Cấu trúc paint (Tiếp)

  • Slide 41

  • 2.4. Nhận hdc (Method Two)

  • 2.5. Hàm TextOut

  • 2.6. Thông tin kích thước kí tự

  • 2.7. Chi tiết về Text Metrics

  • 2.8. Định dạng chữ

  • 2.9. Ví dụ (SysMets1)

  • 2.9. Ví dụ (tiếp)

  • Slide 49

  • Slide 50

  • Slide 51

  • Slide 52

  • Slide 53

  • Slide 54

  • 3. Các thanh cuộn

  • 3. Các thanh cuộn (tiếp)

  • Slide 57

  • Slide 58

  • Slide 59

  • Slide 60

  • Các thanh cuộn (tiếp)

  • Slide 62

  • 3. Ví dụ (SysMets2)

  • 3. Ví dụ (tt)

  • Slide 65

  • Nhận một Device Context (tiếp)

  • Slide 67

  • Slide 68

  • Nhận thông tin Device Context

  • Ví dụ (DevCaps1)

  • Ví dụ (tiếp)

  • Slide 72

  • Slide 73

  • Các thuộc tính của DC

  • Các thuộc tính của DC (tt)

  • Lưu Device Context

  • Lưu Device Context (tiếp)

  • Slide 78

  • Slide 79

  • Slide 80

  • Slide 81

  • Vẽ các điểm và đường thẳng

  • Vẽ điểm (Pixel)

  • Vẽ đường thẳng

  • Straight Lines (con.)

  • Slide 86

  • Straight Lines (con.)

  • Slide 88

  • Slide 89

  • Slide 90

  • Slide 91

  • Slide 92

  • Slide 93

  • Slide 94

  • Slide 95

  • Slide 96

  • Problem

  • Random Drawing

  • PeekMessage

  • PeekMessage (con.)

  • Normal message loop

  • Slide 102

  • Note

  • Note (con.)

  • Slide 105

  • Slide 106

  • Ví dụ (RandRect)

  • Chương 4. Bàn phím

  • Keyboard Basics

  • Ignoring the Keyboard

  • Who's Got the Focus?

  • Who's Got the Focus? (con.)

  • Queues and Synchronization

  • Queues… (con.)

  • Keystrokes and Characters

  • Keystroke Messages

  • System and Nonsystem Keystrokes

  • Slide 118

  • System and Nonsystem Keystrokes...

  • Virtual key code

  • Virtual key code (con.)

  • Slide 122

  • The lParam Information

  • Repeat Count

  • OEM Scan Code

  • Extended Key Flag

  • Context Code

  • Previous Key State

  • Transition State

  • Shift States

  • Thông điệp phím gõ

  • Thông điệp ký tự

  • Một số hàm điều khiển con nháy

  • Ví dụ (Typer)

  • Chương 5. CHUỘT

  • Một số định nghĩa

  • Một số hàm cơ bản

  • Các thông điệp chuột vùng client

  • Ví dụ (Connect)

  • Slide 140

  • Các thông điệp chuột vùng nonclient

  • Thông điệp Hit-Test

  • Thông điệp Hit-Test (tt)

  • Thông điệp tạo ra thông điệp

  • Chương 5. BỘ ĐỊNH THỜI (TIMER)

  • Những khái niệm cơ bản

  • Một số lưu ý

  • Phương pháp sử dụng TIMER

  • Phương pháp 1 (tt)

  • Slide 150

  • Ví dụ (Beeper1)

  • Phương pháp 2

  • Ví dụ (Beeper2)

  • Phương pháp 3

Nội dung

Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin

Lập trình hệ thống GV: Trần Nhật Hóa Bm: Cơng nghệ PM Chương Cơ sở lập trình hệ thống Môi trường Windows       Giao tiếp người dùng đồ họa Đa nhiệm Chia sẻ thủ tục mà Windows cung cấp Sử dụng thư viện liên kết động (DLL) Có tính tương thích cao Xây dựng dựa kiến trúc mở Hoạt động ứng dụng  Theo hướng kiện  Ứng dụng: Được xây dựng không thiết chứa trong file  Cửa sổ: Xuất trực quan hình, thành phần giao tiếp ứng dụng người dùng gồm thành phần bản:    tiêu đề đường viền cửa sổ vùng làm việc (vùng client…) Các khái niệm  Sự kiện (Event)  Là tác động hay hoạt động ảnh hưởng đến ứng dụng (chương trình)  Phân loại:  Các kiện đến từ người dùng  Các kiện đến từ hệ thống  Chỉ xem xét kiện đến từ phía người dùng Các khái niệm (tt)  Thông điệp (Message):     Một kiện xảy phát sinh thông điệp Thông điệp cho biết chất kiện Thơng điệp kèm thông tin bổ sung chứa thông số Hàng đợi thơng điệp (Message queue)    Mỗi ứng dụng có hàng đợi để chứa thơng điệp dành cho (tn theo ngun tắc FIFO) Hàng đợi thông điệp Windows cung cấp Các thơng điệp vào hàng đợi khơng tùy thuộc vào độ ưu tiên thông điệp Các khái niệm (tt)  Vịng lặp thơng điệp (Message loop)    Vịng lặp thơng điệp có chức lấy thông điệp từ hàng đợi để gửi cho chương trình xử lý Vịng lặp thơng điệp phải cài đặt từ phía ứng dụng Thủ tục xử lý thơng điệp   Do chương trình cung cấp để xử lý kiện cần thiết Các thông điệp xử lý không xử lý chương trình gửi cho thủ tục xử lý mặc định Chương 2: Kiến trúc chương trình  Có hai cách tiếp cận cho kiến trúc chương trình C/Windows, là: - Theo hướng thơng điệp (sự kiện) Theo hướng thành phần  Theo hướng kiện   Sơ đồ (hình bên) Mơ tả (…)  Theo hướng thành phần   Windows Windows Sơ đồ (hình bên) Mơ tả (…) Window API WinMain() WinMain() Khởi động biến định Khởi động biến định nghĩa cửa sổ Tạo lập cửa nghĩa cửa sổ Tạo lập cửa sổ sổ Chương trình ứng dụng Thơng điệp Thơng điệp Khởi động Khởi động chương trình chương trình Lời gọi API Lời gọi API WndProc() WndProc() Xử lý thông điệp Xử lý thơng điệp Ví dụ (HelloMsg) #include int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { MessageBox (NULL, TEXT ("Hello, Windows"), TEXT ("HelloMsg"), 0) ; return ; } Kết quả: Ví dụ (tt)  Kết Các thông điệp chuột vùng nonclient  Các thông điệp bao gồm:  Thông thường ta đưa thông điệp cho DefWindowProc xử lý Thông điệp Hit-Test   Thông điệp WM_NCHITTEST trước tất thông điệp vùng client nonclient Các ứng dụng thường đưa thông điệp cho DefWindowProc xử lý, giá trị trả xử lý thông điệp WM_NCHITTEST thông số wParam thông điệp chuột     HTCLIENT HTNOWHERE HTTRANSPARENT window HTERROR Vùng client Không thuộc cửa sổ A window covered by another Tạo tiếng beep Thông điệp Hit-Test (tt)   Nếu giá trị trả HTCLIENT, Windows chuyển tọa độ hình thành tọa độ vùng client tạo thông điệp chuột vùng client Ta cấm chức chuột cách bẫy thơng điệp: case WM_NCHITTEST: return (LRESULT) HTNOWHERE ; Thông điệp tạo thông điệp   Windows sử dụng WM_NCHITTEST để tạo thơng điệp chuột khác Ví dụ:     Double-click vào system menu icon -> WM_NCHITTEST Thông điệp WM_NCLBUTTONDBLCLK đặt vào hàng đợi với wParam HTSYSMENU Thông điệp WM_SYSCOMMAND với wParam SC_CLOSE DefWindowProc gửi thông điệp WM_CLOSE cho thủ tục cửa sổ Chương BỘ ĐỊNH THỜI (TIMER) Những khái niệm  Tác vụ mang tính định kỳ  Được cài đặt ứng dụng để thực nhiệm vụ:     Đa nhiệm Cập nhật trạng thái Cơ chế tự động Thiết kế ứng dụng hoạt hình Một số lưu ý  Thơng điệp WM_TIMER xử lý bình đẳng tất thông điệp khác  Windows không đặt vào hàng đợi hàng loạt thông điệp WM_TIMER  Ta khơng thể biết có thơng điệp WM_TIMER bị bỏ qua Phương pháp sử dụng TIMER  Phương pháp 1: Yêu cầu Windows gửi thông điệp WM_TIMER gửi đến hàm WndProc hàm: SetTimer (hwnd, 1, uiMsecInterval, NULL) ;  Các tham số:    Timer ID, khác Số nguyên 32-bit không dấu xác định mili giây (60,000 -> phút) Hủy bỏ định thời Timer lời gọi: KillTimer (hwnd, 1) ; Tham số thứ Timer ID Phương pháp (tt)  Khi nhận WM_TIMER, wParam xác định ID Timer  Cách sử dụng  Định nghĩa ID cho Timer: #define TIMER_SEC #define TIMER_MIN  Tạo Timer: SetTimer (hwnd, TIMER_SEC, 1000, NULL) ; SetTimer (hwnd, TIMER_MIN, 60000, NULL) ; Phương pháp (tt)  Cấu trúc xử lý: Ví dụ (Beeper1) case WM_CREATE: SetTimer (hwnd, ID_TIMER, 1000*2, NULL) ; SetTimer (hwnd, ID_TIMER2, 1500*2, NULL) ; return ; case WM_TIMER : MessageBeep (-1) ; fFlipFlop = !fFlipFlop ; InvalidateRect (hwnd, NULL, FALSE) ; return ; case WM_PAINT : hdc = BeginPaint (hwnd, &ps) ; GetClientRect (hwnd, &rc) ; hBrush = CreateSolidBrush (fFlipFlop ? RGB(255,0,0) : RGB(0,0,255)) ; FillRect (hdc, &rc, hBrush) ; EndPaint (hwnd, &ps) ; DeleteObject (hBrush) ; return ; case WM_DESTROY : KillTimer (hwnd, ID_TIMER) ; PostQuitMessage (0) ; return ; Phương pháp  Gọi trực tiếp hàm xây dựng cho việc xử lý định thời (gọi call-back)  Xây dựng hàm:  Thiết lập định thời: SetTimer (hwnd, iTimerID, iMsecInterval, TimerProc) ; Ví dụ (Beeper2) VOID CALLBACK TimerProc (HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime) { static BOOL fFlipFlop = FALSE ; HBRUSH hBrush ; HDC hdc ; RECT rc ; MessageBeep (-1) ; fFlipFlop = !fFlipFlop ; GetClientRect (hwnd, &rc) ; hdc = GetDC (hwnd) ; hBrush = CreateSolidBrush (fFlipFlop ? RGB(255,0,0) : RGB(0,0,255)) ; FillRect (hdc, &rc, hBrush) ; ReleaseDC (hwnd, hdc) ; DeleteObject (hBrush) ; } Phương pháp   Thiết lập lời gọi hàm: iTimerID = SetTimer (NULL, 0, wMsecInterval, TimerProc) ; Hủy bỏ: KillTimer (NULL, iTimerID) ; ... Khởi động biến định nghĩa cửa sổ Tạo lập cửa nghĩa cửa sổ Tạo lập cửa sổ sổ Chương trình ứng dụng Thông điệp Thông điệp Khởi động Khởi động chương trình chương trình Lời gọi API Lời gọi API WndProc()...Chương Cơ sở lập trình hệ thống Mơi trường Windows       Giao tiếp người dùng đồ họa Đa nhiệm Chia sẻ thủ tục... GetTextMetricts lần chương trình kích thước font hệ thống không thay đổi Nên đặt lời gọi hàm việc xử lý thông điệp WM_CREATE Sử dụng hai biến để lưu chiều rộng trung bình tổng chiều cao kí tự static

Ngày đăng: 22/10/2014, 22:08

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w