يك سري توابع كار راحت كن در C



1-Dirring
بايد از توابع findfirst و findnext استفاده كنيم عين دلفي منتها اولش بايد فايلهاي dos.h , dir.h را #include كنيم.
و بايد يك ساختار ffblk تعريف كنيم كه با استفاده از ff_name آن، نام فايل پيدا شده را بر مي گردانيم.

2-تغيير رنگ
براي اين كار بايد از تابع textcolor() استفاده كرد.
#include
#include
void main()
{
textcolor(RED);
cprintf(“\n\rHello I am red”);
}

3-دريافت كاراكتر بدون انتظار
براي اين كار بايد از سرويس 6 وقفه 21h استفاده كرد به شرح زير:
Inkey()
{
asm {
Mov ah,06h
Mov dl,0ffh
Int 21h
}
return _AL;
}
اين معادل همان تابع INKEY$ در QBasic است.

4- PutPixel31h
براي نوشتن پيكسل ها در حالت 13h تابع putpixel13h را به صورت زير تعريف ميكنيم:
putpixel13h(int x,int y,int c)
{
char far *ptr1;
ptr1=0xA0000000;
ptr1+=x+y*320;
*ptr1=c;
}
ابتدا يك اشاره گر far تعريف كرديم. سپس آن را برابر سگمنت A000 و افست 0000 قرار داديم. چون حالت 13، 320*200 است، بنابراين نحوه آدرس دهي آن از فرمول addr=x+(y*320) بدست ميآيد.
ptr1+=x+y*320;

در دستور *ptr1=c; مي گيم كه اون نقطه رو كه آدرس دهيش كرديم، با رنگ فلان پر كن.

5-تغيير رجيسترهاي DAC (Color Pallette )
setdacreg(int colornum,int rint,int gint,int bint)
{
asm {
mov ah,10h
mov al,10h
mov bx,colornum
mov ch,gint
mov cl,bint
mov dh,rint
int 10h
}
}
با اين تابع ما يك رنگ بين 0 تا 255 رو با رنگي كه خودمون ميخوايم جايگزين مي كنيم.
توضيح خلاصه: از سرويس 10 وقفه 10 استفاده مي كنيم كه پارامترها را در رجيسترهاي مخصوص به خود قرار مي دهيم.
  
نویسنده : محمد ; ساعت ۳:۱۳ ‎ق.ظ روز پنجشنبه ۸ اسفند ،۱۳۸۱