1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án LTHT- Tọa độ chuột

6 324 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 57,5 KB

Nội dung

ĐA Lập trình hệ thống Minh họa sử dụng chuột, hiển thị tọa độ chuột Khoa Công Nghệ Thông Tin BÁO CÁO ĐỒ ÁN LẬP TRÌNH HỆ THỐNG Giáo viên hướng dẫn : Đặng Bá Lư ĐA Lập trình hệ thống Minh họa sử dụng chuột, hiển thị tọa độ chuột I- Giới thiệu 1. Đề tài Minh họa sử dụng chuột, hiển thị tọa độ chuột 2. Yêu cầu - Mô tả việc sử dụng các tính năng của chuột - Hiển thị tọa độ chuột lên góc phải màn hình II- Chương trình 1. Ngắt sử dụng - 33h / ax = 0000h : Khởi động - 33h / ax = 0001h : Hiện con trỏ - 33h / ax = 0003h : Vị trí và trạng thái nút bấm - 33h / ax = 0024h : Lấy thông tin phần cứng của chuột 2. Thuật toán + Khai báo thư viện dos.h cho int 33h và union REGS #include <dos.h> + Gọi ngắt 33h / ax = 0000h Nếu thành công : ax = 0FFFFh , bx = “number of mouse button” Gọi ngắt 33h / ax = 0001h để hiển thị con trỏ chuột. Đồng thời gọi ngắt 33h / ax = 0024h lấy thông tin chuột. Code : union REGS _regs; _regs.x.ax = 0x0000; // Gan ax = 0000h -> Goi ngat khoi tao chuot int86(0x33, &_regs, &_regs); Num_Mouse_Button = _regs.h.bl;// Dem so button chuot _regs.x.ax = 0x0001; // gan ax = 0001h -> Goi ngat hien thi chuot int86(0x33, &_regs, &_regs); _regs.x.ax = 0x0024; // Ngat ve thong tin chuot int86(0x33,&_regs, &_regs); Num_Type_Mouse = _regs.h.ch; Mở vòng lặp : + Lấy vị trí con trỏ và trạng thái button Gọi ngắt 33h với ax = 0003h Khi đó cx,dx tương ứng là hoành độ và tung độ của vị trí con trỏ. Đồng thời gán trạng thái click cho *St_Button. Nếu : - Left button is down : bx =1 - Right button is down : bx = 2 - Both botton are down : bx = 3 Code : void Get_Pos_Mouse(int * MP_x,int * MP_y,int * St_Button) { union REGS _regs; _regs.x.ax = 0x0003; int86(0x33,&_regs,&_regs); ĐA Lập trình hệ thống Minh họa sử dụng chuột, hiển thị tọa độ chuột *MP_x = _regs.x.cx / 8; *MP_y = _regs.x.dx / 8; *St_Button= _regs.x.bx; } + Tính toán tọa độ chuột. Code : void Change_Str_Pos_Mouse(int x,int y) { Str_Pos_Mouse[0]=(x/10 + 0x30); Str_Pos_Mouse[1]=(x%10 + 0x30); Str_Pos_Mouse[3]=(y/10 + 0x30); Str_Pos_Mouse[4]=(y%10 + 0x30); } + Tùy biến theo trạng thái button Code : void Event_Mouse(int MouseX,int MouseY,int MouseClick) { char _Is_OnMenu ; _Is_OnMenu = Is_OnMenu(MouseX, MouseY); if ( _Is_OnMenu != 0) switch (MouseClick) { case Left_Click : Event_Left_Click(_Is_OnMenu); break; } } + Hiển thị tọa độ và Menu Code : void Show_Menu(char On_Menu) { WriteXY(Colum_Menu,Row_Menu,Str_Pos_Mouse); WriteXY(Colum_Menu,Row_Menu+1,Str_Menu); } void WriteXY(char x,char y,char * Msg) { gotoxy(x,y); cprintf("%s",Msg); // Hien menu } int Is_OnMenu(int x, int y) { int result; result=0; ĐA Lập trình hệ thống Minh họa sử dụng chuột, hiển thị tọa độ chuột if ((x+1 >= Colum_Menu) && (x+1 <= Colum_Menu + 4) && ( y+1 >= Row_Menu + 1) && (y+1 <= Row_Menu+ 3 )) result = y - Row_Menu +1; return(result); } Đóng vòng lặp III- Mã nguồn C++ #include <dos.h> #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> char * Str_Pos_Mouse = "00:00"; char * Str_Menu = "Exit "; char Colum_Menu = 1; // Hien thi goc trai man hinh char Row_Menu = 1; const char Left_Click = 1; int MouseX, MouseY, MouseClick; char Num_Mouse_Button, Num_Type_Mouse;// So nut bam va loai chuot void WriteXY(char x,char y, char * Msg); void Show_Menu(char On_Menu); void Clear_Screen(); void Setup_Mouse(); void Get_Pos_Mouse(int * MP_x,int * MP_y,int * St_Button); void Change_Str_Pos_Mouse(int x,int y); int ShowFile(char * StrFileName); void Event_Left_Click(char _Is_OnMenu); int Is_OnMenu(int x, int y); void Show_Info(); void Event_Mouse(int MouseX,int MouseY,int MouseClick); // void main() { Clear_Screen(); Setup_Mouse(); Show_Info(); do { Get_Pos_Mouse(&MouseX, &MouseY,&MouseClick); Change_Str_Pos_Mouse(MouseX, MouseY); Event_Mouse(MouseX, MouseY, MouseClick); Show_Menu(Is_OnMenu(MouseX, MouseY)); } while (1); } // void Show_Info() ĐA Lập trình hệ thống Minh họa sử dụng chuột, hiển thị tọa độ chuột { char *Type_Mouse; switch(Num_Type_Mouse) { case 1 : Type_Mouse ="Duong tuyen"; break; case 2 : Type_Mouse ="Tuan tu"; break; case 3 : Type_Mouse ="USB - Inport"; break; case 4 : Type_Mouse ="PS/2"; break; case 5 : Type_Mouse ="HP"; break; } gotoxy(1,3); printf("\n Thong tin co ban ve chuot : \n"); printf("\n Loai chuot : %s",Type_Mouse); printf("\n So nut bam : %d",Num_Mouse_Button); } // void Clear_Screen() { textcolor(WHITE); textbackground(BLUE); clrscr(); } // void WriteXY(char x,char y,char * Msg) { gotoxy(x,y); cprintf("%s",Msg); } // void Show_Menu(char On_Menu) { WriteXY(Colum_Menu,Row_Menu,Str_Pos_Mouse); WriteXY(Colum_Menu,Row_Menu+1,Str_Menu); } // int Is_OnMenu(int x, int y) { int result; result=0; if ((x+1 >= Colum_Menu) && (x+1 <= Colum_Menu + 4) && ( y+1 >= Row_Menu + 1) && (y+1 <= Row_Menu+ 3 )) result = y - Row_Menu +1; return(result); } // void Setup_Mouse() { union REGS _regs; _regs.x.ax = 0x0000; // Gan ax = 0000h -> Goi ngat khoi tao chuot int86(0x33, &_regs, &_regs); Num_Mouse_Button = _regs.h.bl;// Dem so button chuot _regs.x.ax = 0x0001; // gan ax = 0001h -> Goi ngat hien thi chuot _regs.x.ax = 0x0024; int86(0x33,&_regs, &_regs); ĐA Lập trình hệ thống Minh họa sử dụng chuột, hiển thị tọa độ chuột Num_Type_Mouse = _regs.h.ch;// Xac dinh loai chuot } // void Get_Pos_Mouse(int * MP_x,int * MP_y,int * St_Button) { union REGS _regs; _regs.x.ax = 0x0003; int86(0x33,&_regs,&_regs); // Goi ngat int 33h/ax=0000h *MP_x = _regs.x.cx / 8 ; // Lay toa do *MP_y = _regs.x.dx / 8 ; // Lay toa do *St_Button= _regs.x.bx; // Lay trang thai } // void Change_Str_Pos_Mouse(int x,int y) { Str_Pos_Mouse[0]=(x/10 + 0x30); Str_Pos_Mouse[1]=(x%10 + 0x30); // Tinh toan toa do Str_Pos_Mouse[3]=(y/10 + 0x30); Str_Pos_Mouse[4]=(y%10 + 0x30); } // void Event_Left_Click(char _Is_OnMenu) { switch (_Is_OnMenu) { case 1 : exit(0); break; } } // void Event_Mouse(int MouseX,int MouseY,int MouseClick) { char _Is_OnMenu ; _Is_OnMenu = Is_OnMenu(MouseX, MouseY); if ( _Is_OnMenu != 0) switch (MouseClick) { case Left_Click : Event_Left_Click(_Is_OnMenu); break; } } . Goi ngat khoi tao chuot int86(0x33, &_regs, &_regs); Num_Mouse_Button = _regs.h.bl;// Dem so button chuot _regs.x.ax = 0x0001; // gan ax = 0001h -> Goi ngat hien thi chuot int86(0x33,. thời gán trạng thái click cho *St_Button. Nếu : - Left button is down : bx =1 - Right button is down : bx = 2 - Both botton are down : bx = 3 Code : void Get_Pos_Mouse(int * MP_x,int * MP_y,int. Goi ngat khoi tao chuot int86(0x33, &_regs, &_regs); Num_Mouse_Button = _regs.h.bl;// Dem so button chuot _regs.x.ax = 0x0001; // gan ax = 0001h -> Goi ngat hien thi chuot _regs.x.ax

Ngày đăng: 23/05/2014, 23:16

TỪ KHÓA LIÊN QUAN

w