Rabu, 29 Juni 2016

Contoh 27 (Coding) dan Gambarnya

#include <stdlib.h>
#include "screen.cpp"
#include "keyboard.cpp"
#include "mouse.cpp"
int main(void)
{
Screen *layar = new Screen();
Keyboard *tombol = new Keyboard(layar);
Mouse *tikus = new Mouse();
UCHAR str[5];
USHORT x, y;
layar->setMode(0x03); layar->setCursorPos(4, 14);
tombol->hideCursor();
if (tikus->getState() == MOUSE_NOT_READY)
{
layar->writeString("Mouse tidak siap! Tekan ENTER ...");
tombol->getString(str, 0);
}
tikus->showMouse();
layar->writeString("Klik A, B atau C");
layar->setCursorPos(5, 14);
layar->writeString("[A] Huruf A");
layar->setCursorPos(6, 14);
layar->writeString("[B] Huruf B");
layar->setCursorPos(7, 14);
layar->writeString("[C] Selesasi");
while (TRUE)
{
layar->setCursorPos(9, 14);
if (tikus->getClickMode() == MOUSE_LEFT_CLICK)
{
x = tikus->getX() / 8; /* Periksa posisi horizontal */
y = tikus->getY() / 8; /* Periksa posisi vertikal */
if ((x == 15) && (y == 5))

layar->writeString("Anda memilih A!");
if ((x == 15) && (y == 6))
layar->writeString("Anda memilih B!");
if ((x == 15) && (y == 7)) break;
}
}
delete layar; delete tombol; delete tikus;
return EXIT_SUCCESS;
}


Gambarnya Sebagai Berikut : 


Contoh Mouse.cpp (Coding)

#define MOUSE_INT 0x33 /* Interupsi mouse */
#define MOUSE_READY 0xff /* Mouse siap digunakan */
#define MOUSE_NOT_READY 0x00 /* Mouse tidak siap */

#define MOUSE_SUCCESS 0x1f /* Bisa dinonaktifkan */
#define MOUSE_FAILURE 0xff /* Tak bisa dinonaktifkan */
#define MOUSE_LEFT_CLICK 0x01 /* Klik tombol kiri */
#define MOUSE_RIGHT_CLICK 0x02 /* Klik tombol kanan */
#define MOUSE_LEFT_BUTTON 0x00 /* Pilih tombol kiri */
#define MOUSE_RIGHT_BUTTON 0x01 /* Pilih tombol kanan */
#define UCHAR unsigned char
#define USHORT unsigned short int
class Mouse
{
private:
UCHAR button; /* Banyaknya tombol mouse */
UCHAR isReady; /* Status mouse siap/tidak */
UCHAR clickMode; /* Klik kiri atau klik kanan */
USHORT x, y; /* Posisi koordinat mouse */
/* Mengetahui posisi koordinat pointer mouse */
void getMousePos(void);
public:
Mouse(void); /* Konstruktor default */
~Mouse(void); /* Destruktor default */
UCHAR getState(void); /* Mouse siap/tidak siap */
UCHAR getNumButton(void); /* Cek jumlah tombol mouse */
UCHAR disableMouse(void); /* Nonaktifkan driver mouse */
void enableMouse(void); /* Aktifkan driver mouse */
/* Mendeteksi penekanan tombol mouse */
USHORT getButtonClick(UCHAR btn, USHORT maxclick);
/* Mendeteksi pelepasan tombol mouse */
USHORT getButtonRelease(UCHAR btn, USHORT maxrel);
/* Mengetahui klik kiri atau klik kanan setelah */
/* fungsi getMousePos dijalankan */
UCHAR getClickMode(void);
USHORT getX(void); /* Posisi horizontal mouse */
USHORT getY(void); /* Posisi vertikal mouse */
void hideMouse(void); /* Menyembunyikan pointer */
void showMouse(void); /* Menampilkan pointer */
/* Memindahkan pointer mouse di posisi tertentu */
void setMousePos(USHORT row, USHORT col);
/* Membatasi posisi koordinat mouse di layar */
void setMouseRegion(USHORT y1, USHORT x1,
USHORT y2, USHORT x2);
};
Mouse::Mouse(void)
{

UCHAR state, button;
asm mov ah, 0x00; /* Register AH = 0 */
asm mov al, 0x00; /* Register AL = 0, AH:AL = 0:0 */
asm int MOUSE_INT; /* Deteksi mouse dan drivernya */
asm mov state, al; /* Salin nilai AL ke state */
asm mov button, bl; /* Salin nilai BL ke button */
this->isReady = state;
this->button = button;
return;
}
Mouse::~Mouse(void)
{
return;
}
UCHAR Mouse::getState(void)
{
return this->isReady;
}
UCHAR Mouse::getNumButton(void)
{
return this->button;
}
UCHAR Mouse::disableMouse(void)
{
UCHAR state;
asm mov ah, 0x00; /* Register AH = 0 */
asm mov al, 0x1f; /* Register AL = 0x1f */
asm int MOUSE_INT; /* Nonaktifkan driver mouse */
asm mov state, al; /* Salin register AL ke state */
return state;
}
void Mouse::enableMouse(void)
{
asm mov ax, 0x0020; /* AH = 0, AL = 0x20 */
asm int MOUSE_INT; /* Aktifkan driver mouse */
return;
}
USHORT Mouse::getButtonClick(UCHAR btn, USHORT maxclick)
{
USHORT click, nclick, x, y;
click = nclick = x = y = 0;
while (nclick < maxclick)
{

asm mov ah, 0x00; /* Register AH = 0 */
asm mov al, 0x05; /* Register AL = 5, AX = 5 */
asm mov bh, 0x00; /* Register BH = 0 */
asm mov bl, btn; /* BL = tombol yang dipilih */
asm int MOUSE_INT; /* Deteksi status klik tombol */
asm mov click, bx; /* Banyaknya penekanan tombol */
asm mov x, cx; /* Posisi horizontal mouse */
asm mov y, dx; /* Posisi vertikal mouse */
nclick += click;
}
this->y = y; this->x = x;
return click;
}
USHORT Mouse::getButtonRelease(UCHAR btn, USHORT maxrel)
{
USHORT rel, nrel, x, y;
rel = nrel = x = y = 0;
while (nrel < maxrel)
{
asm mov ah, 0x00; /* Register AH = 0 */
asm mov al, 0x06; /* Register AL = 6, AX = 6 */
asm mov bh, 0x00; /* Register BH = 0 */
asm mov bl, btn; /* BL = tombol yang dipilih */
asm int MOUSE_INT; /* Deteksi pelepasan tombol */
asm mov rel, bx; /* Banyaknya pelepasan tombol */
asm mov x, cx; /* Posisi horizontal mouse */
asm mov y, dx; /* Posisi vertikal mouse */
nrel += rel;
}
this->y = y; this->x = x;
return rel;
}
void Mouse::getMousePos(void)
{
USHORT x, y;
UCHAR cmode;
asm mov ax, 0x0003; /* AH = 0, AL = 3, AX = 3 */
asm int MOUSE_INT; /* Deteksi posisi mouse */
asm mov x, cx; /* Posisi horizontal mouse */
asm mov y, dx; /* Posisi vertikal mouse */
asm mov cmode, bl; /* Tombol yang diklik */
this->y = y; this->x = x;
this->clickMode = cmode;

return;
}
UCHAR Mouse::getClickMode(void)
{
this->getMousePos();
return this->clickMode;
}
USHORT Mouse::getX(void)
{
return this->x;
}
USHORT Mouse::getY(void)
{
return this->y;
}
void Mouse::hideMouse(void)
{
asm mov ax, 0x0002; /* AH = 0, AL = 2, AX = 2 */
asm int MOUSE_INT; /* Sembunyikan pointer mouse */
return;
}
void Mouse::setMousePos(USHORT row, USHORT col)
{
asm mov ax, 0x0004; /* AH = 0, AL = 4, AX = 4 */
asm mov cx, col; /* Posisi horizontal mouse */
asm mov dx, row; /* Posisi vertikal mouse */
asm int MOUSE_INT; /* Pindahkan pointer mouse */
return;
}
void Mouse::setMouseRegion(USHORT y1, USHORT x1,
USHORT y2, USHORT x2)
{
asm mov ax, 0x0007; /* Register AX = 7 */
asm mov cx, x1; /* CX = batas horizontal minimal */
asm mov dx, x2; /* DX = batas horizontal maksimal */
asm int MOUSE_INT; /* Batasi posisi horizontal mouse */
asm mov ax, 0x0008; /* Register AX = 8 */
asm mov cx, y1; /* CX = batas vertikal minimal */
asm mov dx, y2; /* DX = batas vertikal maksimal */
asm int MOUSE_INT; /* Batasi posisi vertikal mouse */
return;
}
void Mouse::showMouse(void)
{
asm mov ax, 0x0001; /* AH = 0, AL = 1, AX = 1 */

asm int MOUSE_INT; /* Tampilkan pointer mouse */
return;
}



Penjelasannya : 


Setelah membuat pustaka class untuk operasi mouse, berikut ini akan diberikan contoh cara menggunakan pustaka class mouse.cpp. Objek yang harus diinstansiasikan dari pustaka class mouse.cpp adalah objek Mouse. Program berikut ini adalah program untuk mendeteksi pilihan yang ditampilkan dilayar. Pada layar monitor akan ditampilkan pilihan A, B, dan C. Jika pengguna mengklik A atau B maka muncul pesan bahwa pengguna telah memilih A atau B. Tetapi jika pengguna mengklik C maka program akan dihentikan

Contoh 26 (Coding) dan Gambarnya

#include <stdlib.h>
#include "screen.cpp"
#include "keyboard.cpp"
#define MOUSE_INT 0x33 /* Interupsi mouse */
#define MOUSE_LEFT_BUTTON 0x00 /* Pilihan tombol kiri */
#define MOUSE_RIGHT_BUTTON 0x01 /* Pilihan tombol kanan */
#define USHORT unsigned short int
UCHAR detectMouse(UCHAR *btn);
USHORT getButtonRelease(UCHAR btn, USHORT *row,
USHORT *col, USHORT maxrel);
void showMouse(void);
int main(void)
{

Screen *layar = new Screen();
Keyboard *tombol = new Keyboard(layar);
USHORT jumlah, baris, kolom;
UCHAR status, button, str[5];
status = detectMouse(&button);
layar->setMode(0x03); layar->setCursorPos(4, 14);
showMouse();
if (!status)
{
layar->writeString("Mouse tidak siap! Tekan ENTER ...");
tombol->getString(str, 0);
delete layar; delete tombol;
exit(EXIT_FAILURE);
}
layar->writeString("Lepas tombol kanan 5x untuk berhenti");
tombol->hideCursor();
jumlah = getButtonRelease(MOUSE_RIGHT_BUTTON,
&baris, &kolom, 5);
delete tombol; delete layar;
return EXIT_SUCCESS;
}
UCHAR detectMouse(UCHAR *btn)
{
UCHAR state, button;
asm mov ah, 0x00; /* Register AH = 0 */
asm mov al, 0x00; /* Register AL = 0, AH:AL = 0:0 */
asm int MOUSE_INT; /* Laksanakan interupsi 0x33 */
asm mov state, al; /* Salin nilai AL ke state */
asm mov button, bl; /* Salin nilai BL ke button */
*btn = button;
return state;
}
USHORT getButtonRelease(UCHAR btn, USHORT *row,
USHORT *col, USHORT maxrel)
{
USHORT rel, nrel, x, y;
rel = nrel = x = y = 0;
while (nrel < maxrel)
{
asm mov ah, 0x00;
asm mov al, 0x06;
asm mov bh, 0x00;
asm mov bl, btn;

asm int MOUSE_INT;
asm mov rel, bx;
asm mov x, cx;
asm mov y, dx;
nrel += rel;
}
*row = y; *col = x;
return rel;
}
void showMouse(void)
{
asm mov ax, 0x00001;
asm int MOUSE_INT;
return;
}


Gambarnya Sebagai Berikut : 



Penjelasannya : 


Fungsi getButtonRelease pada program contoh26.cpp digunakan untuk mendeteksi pelepasan tombol sebanyak beberapa kali. Parameter btn yang bertipe unsigned character digunakan untuk menentukan tombol mouse (tombol kiri atau kanan) yang akan dibatasi pelepasannya. Parameter col dan row bertipe unsigned integer yang dikirimkan secara referensi digunakan untuk mengetahui posisi baris dan kolom pointer mouse ketika tombol mouse terakhir kali dilepas. Parameter maxclick bertipe unsigned integer digunakan untuk menentukan banyak pelepasan tombol mouse.

Contoh 25 (Coding) dan Gambarnya

#include <stdlib.h>
#include "screen.cpp"
#include "keyboard.cpp"
#define MOUSE_INT 0x33 /* Nomor interupsi mouse */
#define MOUSE_LEFT_BUTTON 0x00 /* Pilihan tombol kiri */
#define MOUSE_RIGHT_BUTTON 0x01 /* Pilihan tombol kanan */
#define USHORT unsigned short int
UCHAR detectMouse(UCHAR *btn);
USHORT getButtonClick(UCHAR btn, USHORT *row,
USHORT *col, USHORT maxclick);
void showMouse(void);

int main(void)
{
Screen *layar = new Screen();
Keyboard *tombol = new Keyboard(layar);
USHORT jumlah, baris, kolom;
UCHAR status, button, str[5];
status = detectMouse(&button);
layar->setMode(0x03); layar->setCursorPos(4, 14);
showMouse();
if (!status)
{
layar->writeString("Mouse tidak siap! Tekan ENTER ...");
tombol->getString(str, 0);
delete layar; delete tombol;
exit(EXIT_FAILURE);
}
layar->writeString("Klik kiri 5 kali untuk berhenti");
tombol->hideCursor();
jumlah = getButtonClick(MOUSE_LEFT_BUTTON,
&baris, &kolom, 5);
delete tombol; delete layar;
return EXIT_SUCCESS;
}
UCHAR detectMouse(UCHAR *btn)
{
UCHAR state, button;
asm mov ah, 0x00; /* Register AH = 0 */
asm mov al, 0x00; /* Register AL = 0, AH:AL = 0:0 */
asm int MOUSE_INT; /* Laksanakan interupsi 0x33 */
asm mov state, al; /* Salin nilai AL ke state */
asm mov button, bl; /* Salin nilai BL ke button */
*btn = button;
return state;
}
USHORT getButtonClick(UCHAR btn, USHORT *row,
USHORT *col, USHORT maxclick)
{
USHORT click, nclick, x, y;
click = nclick = x = y = 0;
while (nclick < maxclick)
{
asm mov ah, 0x00; /* Register AH = 0 */

asm mov al, 0x05; /* Register AL = 0, AH:AL = AX = 0 */
asm mov bh, 0x00; /* Register BH = 0 */
asm mov bl, btn; /* Register BL = tombol yang dipilih */
asm int MOUSE_INT; /* Lakukan interupsi 0x33 */
asm mov click, bx; /* Salin nilai di BX ke click */
asm mov x, cx; /* Posisi kolom terakhir */
asm mov y, dx; /* Posisi baris terakhir */
nclick += click;
}
*row = y; *col = x;
return nclick;
}
void showMouse(void)
{
asm mov ax, 0x00001; /* AH = 0, AL = 1, AX = 1 */
asm int MOUSE_INT; /* Tampilkan pointer mouse */
return;
}


Gambarnya Sebagai Berikut : 



Penjelasannya :


Fungsi getButtonClick pada program contoh25.cpp digunakan untuk mendeteksi penekanan tombol sebanyak beberapa kali. Parameter btn yang bertipe unsigned character digunakan untuk menentukan tombol mouse (tombol kiri atau kanan) yang akan dibatasi penekanannya. Parameter col dan row bertipe unsigned integer yang dikirimkan secara referensi digunakan untuk mengetahui posisi baris dan kolom pointer mouse ketika tombol mouse terakhir kali ditekan. Parameter maxclick bertipe unsigned integer digunakan untuk menentukan banyak penekanan tombol mouse.

Contoh 24 (Coding) dan Gambarnya

#include <stdlib.h>
#include "screen.cpp"
#include "keyboard.cpp"
#define MOUSE_INT 0x33
#define MOUSE_LEFT_CLICK 0x01
#define USHORT unsigned short int

UCHAR detectMouse(UCHAR *btn);
void getMousePos(USHORT *row, USHORT *col, UCHAR *btn);
void showMouse(void);
int main(void)
{
Screen *layar = new Screen();
Keyboard *tuts = new Keyboard(layar);
USHORT baris, kolom;
UCHAR status, button, str[5];
status = detectMouse(&button);
layar->setMode(0x03);
layar->setCursorPos(4, 14);
tuts->hideCursor();
if (!status)
{
layar->writeString("Mouse tidak siap! Tekan ENTER ...");
tuts->getString(str, 0);
delete tuts; delete layar;
exit(EXIT_FAILURE);
}
layar->writeString("Deteksi Koordinat Pointer Mouse");
layar->setCursorPos(6, 14);
layar->writeString("X:");
layar->setCursorPos(7, 14);
layar->writeString("Y:");
layar->setCursorPos(9, 14);
layar->writeString("Klik kanan untuk berhenti");
showMouse();
while (TRUE)
{
/* Periksa koordinat dan penekanan tombol mouse */
getMousePos(&baris, &kolom, &button);
baris /= 8; kolom /= 8; /* kolom dan baris dibagi 8 */
gcvt((double) kolom, 2, str);
layar->setCursorPos(6, 17); layar->writeString(” ”);
layar->setCursorPos(6, 17); layar->writeString(str);
gcvt((double) baris, 2, str);
layar->setCursorPos(7, 17); layar->writeString(” ”);
layar->setCursorPos(7, 17); layar->writeString(str);
if (button == MOUSE_RIGHT_CLICK) break;
}
delete tuts; delete layar;
return EXIT_SUCCESS;
}

UCHAR detectMouse(UCHAR *btn)
{
UCHAR state, button;
asm mov ah, 0x00; /* Register AH = 0 */
asm mov al, 0x00; /* Register AL = 0, AH:AL = 0:0 */
asm int MOUSE_INT; /* Laksanakan interupsi 0x33 */
asm mov state, al; /* Salin nilai AL ke state */
asm mov button, bl; /* Salin nilai BL ke button */
*btn = button;
return state;
}
void getMousePos(USHORT *row, USHORT *col, UCHAR *btn)
{
USHORT x, y;
UCHAR button;
asm mov ah, 0x00; /* Register AH = 0 */
asm mov al, 0x03; /* Register AL = 0, AH:AL = AX = 0 */
asm int MOUSE_INT; /* Lakukan interupsi 0x33 */
asm mov x, cx; /* Salin CX ke x, posisi horizontal */
asm mov y, dx; /* Salin DX ke y, posisi vertikal */
asm mov button, bl; /* Status penekanan tombol */
*row = y; *col = x; *btn = button;
return;
}
void showMouse(void)
{
asm mov ah, 0x00;
asm mov al, 0x01;
asm int MOUSE_INT;
return;
}


Gambarnya Sebagai Berikut :



Penjelasannya : 


Pada program contoh24.cpp fungsi yang digunakan untuk membatasi koodinat posisi mouse adalah fungsi setMouseRegion. Fungsi setMouseRegion menerima empat parameter bertipe unsigned integer yang dikirimkan secara nilai. Parameter y1 dan y2 digunakan untuk menentukan batas vertikal, sedangkan parameter x1 dan x2 digunakan untuk menentukan batas horizontal.

Contoh 23 (Coding) dan Gambarnya

#include <stdlib.h>
#include <time.h> /* Prototype fungsi randomize dan rand */
#include "screen.cpp"
#include "keyboard.cpp"
#define MOUSE_INT 0x33
#define MOUSE_LEFT_CLICK 0x01
#define USHORT unsigned short int
UCHAR detectMouse(UCHAR *btn);
void getMousePos(USHORT *row, USHORT *col, UCHAR *btn);
void setMousePos(USHORT row, USHORT col);
void showMouse(void);
int main(void)
{
Screen *layar = new Screen();
Keyboard *tombol = new Keyboard(layar);
USHORT baris, kolom;
UCHAR status, button, str[5];
status = detectMouse(&button);
layar->setMode(0x03);
layar->setCursorPos(4, 14);
tombol->hideCursor();
if (!status)
{
layar->writeString("Mouse tidak siap! Tekan ENTER ...");
tombol->getString(str, 0);
delete tombol; delete layar;
exit(EXIT_FAILURE);
}
layar->writeString("Klik kiri untuk berhenti.");
showMouse(); /* Tampilkan pointer mouse */

randomize(); /* Inisialisasi angka random */
while (TRUE)
{
baris = rand() % 480;
kolom = rand() % 640;
setMousePos(baris, kolom);
getMousePos(&baris, &kolom, &button);
if (button == MOUSE_LEFT_CLICK) break;
}
delete tombol; delete layar;
return EXIT_SUCCESS;
}
UCHAR detectMouse(UCHAR *btn)
{
UCHAR state, button;
asm mov ah, 0x00; /* Register AH = 0 */
asm mov al, 0x00; /* Register AL = 0, AH:AL = 0:0 */
asm int MOUSE_INT; /* Laksanakan interupsi 0x33 */
asm mov state, al; /* Salin nilai AL ke state */
asm mov button, bl; /* Salin nilai BL ke button */
*btn = button;
return state;
}
void getMousePos(USHORT *row, USHORT *col, UCHAR *btn)
{
USHORT x, y;
UCHAR button;
asm mov ah, 0x00; /* Register AH = 0 */
asm mov al, 0x03; /* Register AL = 3, AH:AL = AX = 3 */
asm int MOUSE_INT; /* Lakukan interupsi 0x33 */
asm mov x, cx; /* Salin nilai register CX ke x */
asm mov y, dx; /* Salin nilai register DX ke y */
asm mov button, bl; /* Salin nilai reg. DL ke button */
*row = y; *col = x;
*btn = button;
return;
}
void setMousePos(USHORT row, USHORT col)
{
asm mov ax, 0x0004; /* Register AX = 4 */
asm mov cx, col; /* Salin nilai col ke register CX */
asm mov dx, row; /* Salin nilai row ke register DX */
asm int MOUSE_INT; /* Pindahkan posisi pointer mouse */
return;

}
void showMouse(void)
{
asm mov ah, 0x00; /* Register AH = 0 */
asm mov al, 0x01; /* Register AL = 1, AH:AL = AX = 1 */
asm int MOUSE_INT; /* Tampilkan pointer mouse */
return;
}


Gambarnya Sebagai Berikut :



Penjelasannya : 


Fungsi setMousePos pada program contoh23.cpp diatas digunakan untuk memindahkan pointer mouse. Fungsi setMousePos menerima parameter row dan col yang bertipe unsigned integer yang dikrimkan secara nilai. Parameter row digunakan untuk menentukan posisi vertikal pointer mouse, sedangkan parameter col digunakan untuk menentukan posisi horizontal mouse. Program contoh23.cpp baru berhenti ketika pengguna menekan tombol kiri mouse.

Contoh 22 (Coding) dan Gambarnya

#include <stdlib.h>
#include "keyboard.cpp"
#include "screen.cpp"
#define MOUSE_INT 0x33
#define MOUSE_RIGHT_CLICK 0x02
#define USHORT unsigned short int

UCHAR detectMouse(UCHAR *btn);
void getMousePos(USHORT *row, USHORT *col, UCHAR *btn);
void showMouse(void);
int main(void)
{
Screen *layar = new Screen();
Keyboard *tuts = new Keyboard(layar);
USHORT baris, kolom;
UCHAR status, button, str[5];
status = detectMouse(&button);
layar->setMode(0x03);
layar->setCursorPos(4, 14);
tuts->hideCursor();
if (!status)
{
layar->writeString("Mouse tidak siap! Tekan ENTER ...");
tuts->getString(str, 0);
delete tuts; delete layar;
exit(EXIT_FAILURE);
}
layar->writeString("Deteksi Koordinat Pointer Mouse");
layar->setCursorPos(6, 14);
layar->writeString("X:");
layar->setCursorPos(7, 14);
layar->writeString("Y:");
layar->setCursorPos(9, 14);
layar->writeString("Klik kanan untuk berhenti");
showMouse();
while (TRUE)
{
/* Periksa koordinat dan penekanan tombol mouse */
getMousePos(&baris, &kolom, &button);
baris /= 8; kolom /= 8; /* kolom dan baris dibagi 8 */
gcvt((double) kolom, 2, str);
layar->setCursorPos(6, 17); layar->writeString(” ”);
layar->setCursorPos(6, 17); layar->writeString(str);
gcvt((double) baris, 2, str);
layar->setCursorPos(7, 17); layar->writeString(” ”);
layar->setCursorPos(7, 17); layar->writeString(str);
if (button == MOUSE_RIGHT_CLICK) break;
}
delete tuts; delete layar;
return EXIT_SUCCESS;
}

UCHAR detectMouse(UCHAR *btn)
{
UCHAR state, button;
asm mov ah, 0x00; /* Register AH = 0 */
asm mov al, 0x00; /* Register AL = 0, AH:AL = 0:0 */
asm int MOUSE_INT; /* Laksanakan interupsi 0x33 */
asm mov state, al; /* Salin nilai AL ke state */
asm mov button, bl; /* Salin nilai BL ke button */
*btn = button;
return state;
}
void getMousePos(USHORT *row, USHORT *col, UCHAR *btn)
{
USHORT x, y;
UCHAR button;
asm mov ah, 0x00; /* Register AH = 0 */
asm mov al, 0x03; /* Register AL = 0, AH:AL = AX = 0 */
asm int MOUSE_INT; /* Lakukan interupsi 0x33 */
asm mov x, cx; /* Salin CX ke x, posisi horizontal */
asm mov y, dx; /* Salin DX ke y, posisi vertikal */
asm mov button, bl; /* Status penekanan tombol */
*row = y; *col = x; *btn = button;
return;
}
void showMouse(void)
{
asm mov ah, 0x00;
asm mov al, 0x01;
asm int MOUSE_INT;
return;
}


Gambarnya Sebagai Berikut :














Penjelasannya ; 


Pada program contoh22.cpp, fungsi getMousePos menerima tiga parameter, yaitu row, col dan btn yang dikirimkan secara referensi. Parameter row dan col yang bertipe unsigned integer digunakan untuk menyimpan posisi baris dan kolom pointer mouse, sedangkan parameter btn yang bertipe unsigned character digunakan untuk mengetahui apakah tombol kiri atau kanan ditekan. Perhatikanlah baris 49! Pada baris 49, variabel baris dan kolom dibagi dengan 8 setelah fungsi getMousePos dijalankan karena nilai baris yang dikembalikan akan berkisar dari 0 s.d 479 dan nilai kolom yang dikembalikan berkisar antara 0 s.d 639. Berikut ini adalah alur program contoh22.cpp: 
  1.  Deteksi mouse. Jika mouse tidak siap digunakan maka program dihentikan.
  2. Jika mouse siap digunakan maka lakukan perulangan terus-menerus untuk memeriksa koordinat pointer mouse.
  3. Tampilkan posisi baris dan kolom pointer mouse.P
  4. Periksa apakah tombol kanan mouse diklik. Jika tombol kanan mouse diklik maka hentikan perulangan dan program selesai.



Postingan Lama Beranda

Diberdayakan oleh Blogger.

Facebook

Popular Posts

Formulir Kontak

Nama

Email *

Pesan *

Subscribe Here

Ad Home

Random Posts

Recent Posts

Recent

Header Ads

Popular Posts

Flickr

Newsletter

Subscribe Our Newsletter

Enter your email address below to subscribe to our newsletter.

Ad Banner

About Us

Random Posts

Popular Posts

 

Followers

 

Social Share Icons

Templates by Nano Yulianto | CSS3 by David Walsh | Powered by {N}Code & Blogger