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

bài giảng bàn phím, chuột và bộ định thời gian

41 400 0

Đ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 41
Dung lượng 206,5 KB

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 5Bàn phím, chuột và bộ định thời gian... Những thông điệp liên quan đến bàn phím Khi thao tác nhấn phím được thực hiện thì Windows phát sinh thông điệp WM_KEYDOWN..  Khi nhả phí

Trang 1

Bài 5

Bàn phím, chuột và bộ định

thời gian

Trang 2

Bài 5

Bàn phím, chuột và bộ định

thời gian

Trang 3

Những thông điệp liên quan đến bàn phím

Khi thao tác nhấn phím được thực

hiện thì Windows phát sinh thông

điệp WM_KEYDOWN.

Khi nhả phím thì Windows sẽ phát

sinh thông điệp WM_KEYUP

Trong đó, tham số wParam sẽ nhận giá trị

mã phím ảo, và tham số lParam chứa

thông tin chi tiết về phím được gõ vào

Trang 4

Các mã phím ảo cần nhớ

 VK_DOWN : Mã phím mũi tên đi xuống

 VK_UP: Mã phím mũi tên đi lên

 VK_LEFT: Mã phím mũi tên qua trái

 VK_RIGHT: Mã phím mũi tên qua phải

Trang 5

Ví dụ 1

Ví dụ 1: Xuất ký tự A ra màn hình, sau

đó dùng phím mũi tên đi lên, đi xuống và qua lại để di chuyển ký tự A ở trên Biết rằng 1 bước dịch chuyển là 3 pixel Lần xuất đầu tiên ký tự nằm giữa cử sổ

chính

Trang 6

Giao diện chương trình

Trang 7

 Khai báo trong hàm WndProc

• static int x,y;

• TCHAR str[2];

Trang 10

Coding (tt)

case WM_KEYDOWN:

switch (wParam) { case VK_DOWN:

Trang 11

break;

Trang 12

Ví dụ 2

 Vẽ 1 hình tròn bán kính 5 pixel ra màn hình sau đó dung phím +,- để phóng to và thu nhỏ hình tròn trên Biết rằng kích thước R mỗi lần tăng hoặc giảm đi 3 pixel

Trang 13

Giao diện chương trình

Trang 16

Coding (tt)

case WM_PAINT:

hdc = BeginPaint (hWnd, &ps); Ellipse (hdc,x-R,y-R,x+R,y+R); EndPaint (hWnd, &ps);

break ;

Trang 17

Lập trình xử lý thông điệp

case WM_KEYDOWN:

switch (wParam) {

Trang 18

Thông điệp liên quan đến chuột

WM_MOUSEMOVE: Phát sinh khi dịch chuyển

chuột trong vùng làm việc

Trang 19

Thông điệp liên quan đến chuột

 Khi người dùng click chuột, tuỳ theo cách thao tác mà chúng ta có các thông điệp sau:

Nút Nhấn Thả Nhấn đúp

Trái WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDBLCLK

Giữa WM_MBUTTONDOWN WM_MBUTTONUP WM_MBUTTONDBLCLK

Phải WM_RBUTTONDOWN WM_MBUTTONUP WM_RBUTTONDBLCLK

Trang 20

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

 Để nhận được thông điệp kích đôi thiết

bị chuột thủ tục MyRegisterClass cửa sổ phải khai báo nhận thông điệp này như sau:

Trang 21

wParam: cho biết trạng thái của nút

nhấn, các trạng thái của nút nhấn như sau:

Trang 22

Trạng thái của nút nhấn trên chuột

MK_LBUTTON Nút chuột trái được nhấn MK_MBUTTON Nút chuột giữa nhấn

MK_RBUTTON Nút chuột phảI nhấn

MK_SHIFT Phím shift được nhấn

MK_CONTROL Phím Control được nhấn

Trang 23

Ví dụ 1

 In ví trí của chuột lên thanh tiêu đề của chương trình khi chúng ta di chuyển chuột trên cửa sổ làm việc.

Trang 25

Ví dụ 2

Vẽ hình tròn bán kính 50 pixel tại vị trí

chuột trái nhấn trên màn hình Ví trí đầu tiên hiển thị là giữa màn hình

Trang 26

 Khai báo

static int x,y;

 Viết lệnh trong thông điệp WM_SIZE

case WM_SIZE:

x=LOWORD(lParam)/2;

y=HIWORD(lParam)/2;

Trang 28

Ví dụ 3

 Vẽ đường thẳng từ vị trí Click chuột trái ban đầu đến vị trí Click chuột trái cuối

Trang 29

 Khai báo biến trong hàm WndProc

static POINT pFrom, pTo;

static int flag;

 Viết lệnh trong WM_CREATE

case WM_CREATE:

flag=0;

break ;

Trang 30

Coding (tt)

case WM_LBUTTONDOWN:

if (flag==0) {

Trang 31

Ví dụ 4

 Vẽ nét liền khi nhấn và rê chuột trái trong vùng làm việc

Trang 33

Coding (tt)

case WM_MOUSEMOVE:

hdc=GetDC(hWnd);

if ((wParam&MK_LBUTTON)==MK_LBUTTON) {

pTo.x=LOWORD(lParam);

pTo.y=HIWORD(lParam);

MoveToEx(hdc,pFrom.x,pFrom.y,NULL); LineTo(hdc,pTo.x,pTo.y);

pFrom=pTo;

} ReleaseDC(hWnd,hdc);

Trang 34

Bộ định thời gian

 Kích hoạt bộ định thời gian :

UINT_PTR SetTimer(HWND hWnd, UINT_PTR

nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc);

uElapse (phần nghìn giây): Xác lập thời gian mà Windows

se phát sinh thông điệp WM_TIMER.

nIDEvent : định danh của bộ định thời gian.

lpTimerFunc trỏ đến hàm sẽ xử lý khi thông điệp

WM_TIMER phát sinh Nếu giá trị này là NULL thì Windows

sẽ gởi thông điệp WM_TIMER vào hàng đợi thông điệp của

cửa sổ tương ứng.

 Hủy bộ định thời gian

Trang 35

Ví dụ

 Viết chương trình xuất ra màn hình đồng

hồ điện tử gồm có giờ :phút:giây ra màn hình

Trang 38

Ví dụ 2

 Viết chương trình hiển thị vòng tròn có R=50 nằm giữ màn hình Cứ 1 giây R tăng lên 1 pixel, khi chặm biên thì giảm

R, và khi bằng R ban đầu thì tăng R lên lại

Trang 39

 Khai báo biến trong hàm WndProc

static int R,x,y,chieu;

Trang 40

Coding (tt)

case WM_TIMER:

if (chieu==1) {

Ngày đăng: 20/01/2016, 17:20

HÌNH ẢNH LIÊN QUAN

 Vẽ  1  hình  tròn  bán  kính  5  pixel  ra  màn  hình sau đó dung phím +,- để phóng to và  thu  nhỏ  hình  tròn  trên - bài giảng   bàn phím, chuột và bộ định thời gian
1 hình tròn bán kính 5 pixel ra màn hình sau đó dung phím +,- để phóng to và thu nhỏ hình tròn trên (Trang 12)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w