以下是我从网上好不容易google的,
#include<conio.h>
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include <dos.h>
#include <stdlib.h>
#define  VBE320X200X256               0X13
#define  VBE640X480X256               0X101
#define  VBE800X600X256               0X103
#define  VBE1024X768X256              0X105
class VIEW //显示类
{
    char *video,_video_;                    //虚拟屏幕内存指针
    unsigned short g_cur_vbe_page;            //引用neo变量
public:
    VIEW();                                    //本类构造函数
    ~VIEW();                                //本类析构函数
    void InitGraph(void);                    //初始化显示模式
    void CloseGraph(void);                    //关闭图形模式
    void set_vbe_page(int page);            //引用neo函数
    void BitBlt();                            //将虚拟屏幕的内容写至物理屏幕上
    void PutPixel(int x,int y,int color);    //指定颜色画点
    void HLine(int x,int y,int color);        //画横线
};
VIEW::VIEW()
{
    GuiInitGraph();                            //初始化图形显式模式
    _video_=(char *)malloc(800*600*sizeof(char)); //为虚拟屏幕分配内存
    video = _video_;
}
VIEW::~VIEW()                        //本类析构函数,自动执行
{
    free(video);                    //释放虚拟屏幕所用内存
    GuiCloseGraph(); //初始化屏幕为文本状态
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//显存换页函数 引用neo函数
/////////////////////////////////////////////////////////////////////////////////////////////////
void VIEW:: set_vbe_page(int page)
{
    if (g_cur_vbe_page != page)
    {
        _BX = 0;
        _DX = g_cur_vbe_page = page;
        _AX = 0x4F05;
        __int__(0x10);
    }
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//初始化屏幕为800X600X256
/////////////////////////////////////////////////////////////////////////////////////////////////
void VIEW::GuiInitGraph(void)
{
  _AX = 0x4F02;
  _BX = VBE800X600X256;
  __int__(0x10);
  if(_AH != 0)
   {
    puts("Can't Initialize the graphics mode!");
    exit(1);
   }
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//关闭图形模式函数
/////////////////////////////////////////////////////////////////////////////////////////////////
void VIEW::GuiCloseGraph(void)
{
  _AX = 0x4F02;
  _BX = 0x03;
  __int__(0x10);
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//按指定颜色画点到虚拟屏幕
/////////////////////////////////////////////////////////////////////////////////////////////////
void VIEW::PutPixel(int x, int y,int color) 
{
    if(x<=799 &&y<=599)
    {
        video=_video_+y*800+x; //移动虚拟屏幕指针
        *video=color=c; //写入颜色代码并改变当前颜色
    }
    video=_video_; //恢复虚拟屏幕指针 
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//虚拟屏幕800X600送物理屏幕函数
/////////////////////////////////////////////////////////////////////////////////////////////////
void VIEW::BitBlt() //屏幕刷新函数
{ 
    unsigned char i;
    unsigned short *VIDEO=(unsigned short *)(0xA000<<4); //显存指针
    video=_video; //恢复虚拟屏幕指针
    for(i=0;i<14;i++)
    {
        set_vbe_page(i); //选择显存页面
        memcpy(VIDEO,video,65536); //从虚拟屏幕拷贝64k数据到显存
        video+=32768; //虚拟屏幕指针后移
    }
    set_vbe_page(14); //选择最后一页
    memcpy(VIDEO,video,42496); //写入最后一页数据
    video=_video; //恢复虚拟屏幕指针
}
void main()
{
    VIEW vga; //创建控制指针
    for (int i=0;i<800;i++)
        for (int j=0;j<600;j++)
            vga.PutPixel(i,j,WHITE);//从虚屏用白色点填充
        vga.BitBlt();                //送到物理屏幕
    getch();
    getch();
}
一笔苍穹,上面的程序怎么无法实现800X600X256的屏幕上满屏显示白色呢?