当前位置:编程学习 > VC++ >>

TC VC++6.0 写屏

网上找的源代码 #include<stdio.h> #include<dos.h> void Clear(int,int,int,int);/*用户自定义函数Clear(),Print()为void类型*/ void Print(int,int,char *,int); void main(void) { char *s="Hello,Xu Jin Bao!"; char *str="Apr 16,1996"; Clear(0,0,24,79); /*清整个屏幕*/ Print(8,16,s,4); Print(10,18,str,1); getchar(); /*敲任意健继续,相当于等待*/ Clear(8,16,8,32); /*清s字符串*/ Clear(10,18,10,28); /*清str字符串*/ } /*Print()函数利用直接写屏技术,在屏幕(StartX,StartY)处显示一字符串str,*/ void Print(int StartX,int StartY,char *str,int attr) { char far *p; p=(char far*)0xb8000000; /*显示缓存区首址*/ p=p+StartX*160+StartY*2;/*计算字符串显示位置*/ for(;*str!='\0';p+=2) /*显示字符串*/ { *p=*str++; *(p+1)=attr; } } /*Clear()清除指定屏幕区域*/ void Clear(int StartX,int StartY,int EndX,int EndY) { char far *p,*EndP; char c=' '; int attr=7; /*清屏的颜色属性设为白色*/ p=(char far *)0xb8000000; /*显示缓存区首址*/ p=p+StartX*160+StartY*2;/*计算清屏区域*/ EndP=p+(EndX-StartX)*160+(EndY-StartY)*2; for (;p<=EndP;p+=2) /*将指定区域清屏*/ { *p=c; *(p+1)=attr; } } 1.在TC环境下编译运行正确,但在VC++6.0下出现错误:error C4226: nonstandard extension used : 'far' is an obsolete keyword.为了消除错误,我加入了头文件#include<windows.h>,此时编译连接无错误,但无法运行!为什么? 2.graphics库中的putpixel函数是怎样实现画像素的,可以自己写一个函数实现该功能么? 3.谢谢!
答案:直接写屏么。0xb8000000在DOS中是显示缓存。TC是在模拟DOS环境中运行。Windows下,VC的控制台也没有真正模拟DOS环境吧。在VC中实现,你需要获得显存的物理地址,需要进入0环。你还要检索VirtualAlloc。现在即便开发游戏都很少用了。
其他:vc6不支持graphics里的函数

可加Q群:219578323 色鬼色鬼色鬼色鬼色鬼岁 

上一个:vc榨装zy尚记氺
下一个:关于VC++

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,