Rabu, 29 Juni 2016

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.



0 komentar:

Posting Komentar

Posting Lebih Baru Posting 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