Bài giảng Lập trình trên Windows: Chương 3 - Trần Minh Thái - Trường Đại Học Quốc Tế Hồng Bàng

20 17 0
Bài giảng Lập trình trên Windows: Chương 3 - Trần Minh Thái - Trường Đại Học Quốc Tế Hồng Bàng

Đ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

Event-driven programming model trong C# WM_PAINT WM_MOUSEMOVE WM_KEYDOWN OnKeyDown OnMouseMove OnPaint Messages Message queue Application Message handlers gọi các sự kiện tuơng ứng. Ap[r]

(1)

Lập trình Windows

Chương Lập trình C# Windows

(2)

Nội dung

(3)(4)

Khái niệm thông điệp (Message)

• Là số nguyên quy ước trước Windows

ứng dụng (Application)

• Các liệu nhập (từ bàn phím, từ chuột, …)

Windows chuyển thành message số thông tin kèm theo message

• Ví dụ

(5)

5

Hàng đợi

• System Queue

• Windows chứa message hàng đợi gọi hàng đợi hệ

thống

• Application Queue

• Các ứng dụng có hàng đợi riêng để chứa message ứng dụng

gọi hàng đợi ứng dụng

• Windows tự động phân bố message từ System Queue

(6)

Lập trình Windows

Hardware input

Hệ điều hành Windows

Ứng dụng A

Nhận xử lý

Ứng dụng B

Nhận xử lý Message loop

Message loop System

Queue

Application Queue A

(7)

7

Event-driven programming model

• Message loop (vịng lặp thơng điệp)

• Mỗi Application tại thời điểm có message loop để lấy

message Application Queue để phân bố cho cửa sổ (Window) Application

• Hàm Window Procedure

• Mỗi cửa sổ (Window) Application có hàm Window

(8)

Event-driven programming model WM_PAINT WM_MOUSEMOVE WM_KEYDOWN OnKeyDown OnMouseMove OnPaint Messages Message queue

Application Message handlers

(9)

9

Event-driven programming model

• Ứng dụng phản ứng kiện (nhấn phím, click chuột, .)

bằng cách xử lý message Windows gởi đến

• Một ứng dụng Windows điển hình thực lượng lớn

xử lý để phản hồi message nhận Và message nó chờ message đến

• Message queue: Các message chờ message queue

(10)

Event-driven programming model

• Hàm Main: Tạo cửa sổ vào message loop • Message loop

• Nhận message phân bố chúng đến Window Procedure

cửa sổ

• Message loop kết thúc nhận WM_QUIT (chọn Exit từ menu

File, click lên close button)

• Window Procedure:

• Phần lớn đoạn mã đặt Window Procedure • Window Procedure xử lý message gởi đến cửa sổ

• Window Procedure điển hình chứa câu lệnh switch lớn với case

một message riêng

(11)

11

Event-driven programming model C#

• Message Loop  Application.Run() • Window  Form

• Window Procedure  WndProc(ref Message m)

•Phần lớn Message handlers cài đặt sẵn lớp có

thể nhận message (Control, Form, Timer,…) dạng:

protected void OnTenMessage(xxxEventArgs e)

(xxxEventArgs EventArgs hay lớp EventArgs)

• Mỗi message có biến event tương ứng

• Các Message handlers gọi event tương ứng

message

(12)

Event-driven programming model C# WM_PAINT WM_MOUSEMOVE WM_KEYDOWN OnKeyDown OnMouseMove OnPaint Messages Message queue Application Message handlers gọi kiện tuơng ứng

Application.Run()

WndProc(ref Message m)

(13)

Tạo ứng dụng

(14)

Các bước tạo ứng dụng Windows

• Bước 1:

• Thiết kế giao diện

• Bước 2:

• Xử lý message Windows gởi đến

• Bước 3:

(15)

15

Các bước tạo ứng dụng Windows

• Cách 1: Trực tiếp – thừa kế

• Thiết kế giao diện

• Tạo lớp thừa thừa kế từ lớp Form • Bố cục control

• Thiết lập property cho control

• Xử lý thơng điệp Windows gởi đến: cách override

message handler

(16)

Các bước tạo ứng dụng Windows

• Cách 2: Gián tiếp qua field event

• Thiết kế giao diện

• Bố cục control

• Thiết lập property cho control

(17)

17

Các bước để tạo ứng dụng Windows

• Bước 1: Tạo Empty Project

• File  New  Project

• Project Type: Visual C#  Windows • Template: Empty Project

• Bước 2: Thêm references

• Click phải lên References  Add Reference

• System.Windows.Forms • System.Drawing

• [System.Core]

• Bước 2: using namespace

using System.Windows.Forms; using System.Drawing;

• Bước 3: Thêm class file

• Click phải lên project  Add  Class

• Bước 4: Viết code

(18)

Dùng Form, Không thừa kế

class Program {

static void Main() {

Form form = new Form();

form.Text = “First Application”; Application.Run(form);

(19)

19

Dùng Form, Không thừa kế

class Program

{

static void Main()

{

Form form = new Form(); form.Text = "WinForm";

form.BackColor = Color.Green; form.Width = 300;

form.Height = 300;

form.MaximizeBox = false; form.Cursor = Cursors.Hand;

form.StartPosition = FormStartPosition.CenterScreen;

Application.Run(form); }

}

(20)

Dùng Form, Không thừa kế

class Program

{

static void Main()

{

Form form = new Form(); form.Text = “WinForm”;

form.Click += form_Click;

Application.Run(form); }

static void form_Click(object sender, EventArgs e)

{

MessageBox.Show("Ban da click vao form"); }

Ngày đăng: 01/04/2021, 16:54

Tài liệu cùng người dùng

Tài liệu liên quan