Rabu, 03 Mei 2017

CONTOH SCREEN CPP.12

Pada kode program contoh11.cpp fungsi getKey adalah fungsi yang digunakan untuk
input satu karakter. Fungsi getKey tidak memerlukan parameter dan mengembalikan nilai
bertipe unsigned character (didefinisikan dalam file screen.cpp sebagi UCHAR). Nilai yang
dikembalikan oleh fungsi ini adalah karakter yang diketikan pada tombol keyboard. Fungsi ini
sama dengan fungsi standar getch.

Setelah mempelajari cara memasukan satu karakter, maka langkah berikutnya adalah
mempelajari cara mendeteksi penekanan tombol-tombol extended. Project contoh12.ide berikut
ini memberikan contoh cara mendeteksi penekanan tombol F1, F2, F3, dan F4. Simpan kode
program contoh12.cpp berikut ini pada direktori yang sama dengan file screen.cpp.

CONTOH SCREEN CPP.12

#include <stdlib.h>
#include "screen.cpp"

#define KEY_INT 0x16  /* Nomor interupsi keyboard */
#define KEY_F1  0x3b  /* Kode scan tombol F1      */
#define KEY_F2  0x3C  /* Kode scan tombol F2      */
#define KEY_F3  0x3d  /* Kode scan tombol F3      */
#define KEY_F4  0x3e  /* Kode scan tombol F4      */
#define TRUE    1

UCHAR getSpecialKey(void);

int main(void)
{
Screen *layar = new Screen();
UCHAR tombol;

layar->setMode(0x03);
layar->setCursorPos(5, 9);
layar->setAttribute(0xc7);//huruf warna putih latar merah
layar->writeString("Tekan F1, F2, F3");
layar->setAttribute(0x9);//huruf warna light blue
layar->setCursorPos(6, 9);
layar->writeString("Tekan F4 untuk berhenti");
layar->setCursorPos(8, 9);

while (TRUE)
{
tombol = getSpecialKey();   // Periksa tombol yang ditekan

layar->setCursorPos(8, 9);

switch (tombol)
{
case KEY_F1 :
layar->setAttribute(0xe5);//huruf ungu latar kuning
layar->writeString("Tombol F1 ditekan");
break;
case KEY_F2 :
layar->writeString("Tombol F2 ditekan");
layar->setAttribute(0xe5);//huruf ungu latar kuning
break;
case KEY_F3 :
layar->writeString("Tombol F3 ditekan");
layar->setAttribute(0xe5);//huruf ungu latar kuning
break;
case KEY_F4 :
delete layar;
return EXIT_SUCCESS;
default :
layar->writeString("Tombol lain      ");
break;
}
}
}

UCHAR getSpecialKey(void)
{
UCHAR key;

asm mov ah, 0x00;   /* Register AH = 0                   */
asm int KEY_INT;    /* Lakukan interupsi 16 heksadesimal */
asm mov key, ah;    /* Salin nilai di AH ke variabel key */

return key;
}





Pada kode program contoh12.cpp fungsi getSpecialKey adalah fungsi yang
digunakan untuk mendeteksi penekanan tombol-tombol khusus.  Perhatikanlah pada baris
kelima sampai baris kedelapan, karena setiap tombol khusus memiliki kode tersendiri maka
pada baris kelima sampai kedelapan dideklarasikan konstanta untuk tombol F1 sampai F4.
Kode scan untuk tombol F1 adalah 3b heksadesimal, F2 adalah 3c heksadesimal, dan
seterusnya. Bandingkanlah kode program contoh11.cpp dengan kode program contoh12.cpp
pada fungsi getKey dan getSpecialKey. Pada fungsi getKey nilai yang dijadikan sebagai nilai
kembali fungsi (return value) adalah nilai yang tersimpan di register AL, sedangkan pada fungsi

getSpecialKey nilai yang dikembalikan adalah nilai yang tersimpan di register AL.

0 komentar:

Posting Komentar

Template by:

Free Blog Templates