Yayınlama: 17 Ağustos 2020
2) Metin ekranda fare imleç görüntüsünü değiştirme
Metin ekranda (SCREEN 0) fare imlecini değiştirmek için yazmaçlara aktarılacak
değerler:
AX = &HA
BX = imleç tipi:
0: Yazılım imleci,
1: Donanım imleci
BX = 0
CX = AND maskesi. Varsayılan değer = &HFFFF
DX = XOR maskesi. Varsayılan değer = &H7700
CX ve DX yazmaçlarına aktarılan INTEGER değerin(2 bayt);
alt baytı(low byte): Karakter kodu,
üst baytı(high byte): Zemin rengi ve karakter rengini ayarlar.
Üst baytdaki;
1. karakter: Zemin rengini,
2. karakter: karakter rengi içindir.
Zemin rengi için 7'den büyük sayılar imlecin yanıp sönmesini sağlar(blinking)
alt bayt: 16'lık sayıda sağdaki 2 karakter. örneğin &H2FA3 için alt byte A3 dür.
alt baytı elde etmek için formül: SAYI AND &HFF
üst baytı elde etmek için formül: SAYI AND &HFF00
üst bayt: 16'lık sayıda soldaki 2 karakter. örneğin &H2FA3 için üst byte 2F dir.
Örnek 1:
AX = &HA
BX = imleç tipi:
0: Yazılım imleci,
1: Donanım imleci
a)Yazılım imleci
AX = &HABX = 0
CX = AND maskesi. Varsayılan değer = &HFFFF
DX = XOR maskesi. Varsayılan değer = &H7700
CX ve DX yazmaçlarına aktarılan INTEGER değerin(2 bayt);
alt baytı(low byte): Karakter kodu,
üst baytı(high byte): Zemin rengi ve karakter rengini ayarlar.
Üst baytdaki;
1. karakter: Zemin rengini,
2. karakter: karakter rengi içindir.
Zemin rengi için 7'den büyük sayılar imlecin yanıp sönmesini sağlar(blinking)
alt bayt: 16'lık sayıda sağdaki 2 karakter. örneğin &H2FA3 için alt byte A3 dür.
alt baytı elde etmek için formül: SAYI AND &HFF
üst baytı elde etmek için formül: SAYI AND &HFF00
üst bayt: 16'lık sayıda soldaki 2 karakter. örneğin &H2FA3 için üst byte 2F dir.
Örnek 1:
DX = &H2F58
Kodların açılımı:
2: Yeşil zemin. 2=Yeşil renk
F: Beyaz yazı rengi. &HF=15=Beyaz renk
58: &H58 = 88 = X karakteri
Örnek 2:
DX = &H9E18
9: Mavi zemin.1+8=9. 1=Mavi renk. 7'den büyük renk kodları yanıp sönen imleç içindir.
E: Sarı yazı rengi. &HE=14=Sarı renk
18: &H18 = 24 = Yukarı ok karakteri
Örnek kod:
' Metin ekranda fare imleç görüntüsünü değiştir ' ©2020 Mesut Akcan ' mesutakcan.blogspot.com '$INCLUDE: 'qb.bi' DEFINT A-Z DIM SHARED regs AS RegType SCREEN 0: CLS SatirDoldur 'satırlara rastgele renkte rastgele yazılar yaz regs.ax = &H1 'fare göster Kesinti regs.ax = &HA 'Metin ekranda fare imleci değiştir regs.bx = 0 'Yazılım imleci 'ÖRNEK 1 regs.cx = &HFF 'AND maskesi FF=Zemin karakterini al regs.dx = &H4F00 'XOR maskesi '4=Kahverengi zemin, F=Beyaz renk, 00=Zeminden gelen karakter Durakla 'ÖRNEK 2 regs.cx = 0 'zemin rengini ve karakteri sıfırla regs.dx = &HAE12 'A=10:Yeşil zemin, yanıp sönen yazı 'E=14:Sarı renk, &H12=18=karakter kodu Durakla 'ÖRNEK 3 regs.dx = &H1F7F '1=Mavi zemin 'F=15:Beyaz renk, &H7F=127=karakter kodu Durakla 'ÖRNEK 4 regs.cx = &HFF00 'Zemin karakter rengini al regs.dx = &H2A 'Zemin karakter rengiyle * karakteri '&H2A=42=karakter kodu=* Durakla 'ÖRNEK 5 regs.cx = &HFFFF 'Zemin karakteri ve rengini al regs.dx = &H8000 'Açık renk yapmak için alınan zemin rengine 8 ekle. 'Aynı karakter ve renk ile yanıp sönen Durakla 'ÖRNEK 6 regs.cx = &HFFFF 'Zemin karakteri ve rengini al regs.dx = &H8800 'Alınan zemin ve yazı rengine 8 ekle 'Açıksa koyu, koyu ise açık renk ile yanıp sönen aynı karakter Durakla SLEEP regs.ax = 0 'fareyi sıfırla Kesinti SUB Durakla STATIC n AS INTEGER COLOR 14: LOCATE 1, 1 PRINT "İmleci değiştirmek için bir tuşa basınız." SLEEP n = n + 1 PRINT "Örnek"; n; COLOR 10: PRINT ": CX=&H"; HEX$(regs.cx); ", DX=&H"; HEX$(regs.dx) Kesinti END SUB SUB Kesinti CALL INTERRUPT(&H33, regs, regs) END SUB SUB SatirDoldur LOCATE 3 FOR n% = 1 TO 1680 COLOR RND * 7 + 1 PRINT CHR$(RND * 223 + 32); NEXT END SUB
b) Donanım imleci
AX = &HABX = 1 ise;
CX = imleç şekli dolgu başlama satırı
DX = imleç şekli dolgu bitiş satırı
LOCATE komutunun 4. ve 5. parametresi klavye imlecini değiştir. CX ve DX yazmaçlarına aktarılan değerler ile LOCATE komutunda olduğu gibi fare imleci değişikliği yapılır.
LOCATE komutu için Bölüm 8: Karakter ve metinler ile ilgili işlemler sayfasına bakınız.
Not: Kendi bilgisayarımda yaptığım denemelerde bu fonksiyon fare imlecine;
DOSBOX altında ve VirtualBox'da kurulu Windows XP altında çalışan QuickBasic v4.5'te bir etki yapmamıştır.
VirtualBox'da kurulu DOS 6.22 altında çalışan QuickBasic v4.5'te ise fare imleci değişmiştir.
80x25 metin ekran için imleç satır sayısı 8'dir.
CX ve DX yazmaçlarına aktarılacak değer aralığı: 0-7
Diğer ekran modları için değer aralığı değişecektir.
Örnek:
' Metin ekranda fare imleç görüntüsünü değiştir ' ©2020 Mesut Akcan ' mesutakcan.blogspot.com '$INCLUDE: 'qb.bi' DIM SHARED regs AS RegType SCREEN 0: CLS regs.ax = &H1 'fare göster Kesinti regs.ax = &HA 'Metin ekranda fare imleci değiştir regs.bx = 1 'Donanım imleci regs.cx = 4 'dolgu başlama satırı regs.dx = 7 'bitiş satırı Kesinti SLEEP regs.ax = 0 'fareyi sıfırla Kesinti SUB Kesinti CALL INTERRUPT(&H33, regs, regs) END SUB
Önceki Bölüm: 22: Fare (mouse) kullanımı-3 | Sonraki Bölüm: 24: Ses, Müzik |
Hiç yorum yok:
Yorum Gönder