我想在实时监控的程序中加一些我自己的程序(像素数据的显示)可是画面总是在动,如何一帧一帧的??我的程序如下#define  ESC            27void enlarge(int Xs,int Ys,int Dx,int Dy,int Xd,int Yd,int f)
{                                         //  256 色图像放大整数倍
  int i,j,k,xx,yy;        //  f 为放大倍数, 应为整数, 采用重复法。
  BYTE buffer[1024];  xx=(swide-Xd)/f;
  yy=(sdeep-Yd)/f;
  Dx=min(Dx,xx);  Dy=min(Dy,yy);
  for (i=0;i<Dy;i++) {
    get_image(Xs,Ys+i,Dx,1,buffer);
    for (j=Dx-1;j>-1;j--) {
      for (k=0;k<f;k++)
buffer[j*f+k]=buffer[j];
    }
    for (j=0;j<f;j++)
      put_image(Xd,Yd+i*f+j,Dx*f,1,buffer);
  }
}void show(char *file,int Dx, int Dy, int dx, int dy, int color)  //  显示窗口数据和调色板
{
  int  i, j, x, y, xold, yold, ch, n=0;
  int  f,xnew,ynew;
  BYTE buff[150], buffer[800];  Dx=min(Width, Dx);  Dy=min(Height, Dy); //  确定实际显示尺寸
  xold=x=Dx/2;       yold=y=Dy/2;                   //  显示数据位置初始化
  palette(120,420,10,10,0);  //  用块充填子程序画256个彩色方块
  box(118, 418, 163, 163, 1, color);                //  画调色板外框
  box(595, 29, 5*dx+2, 5*dy+2, 1, color);         //  画放大区域外框
  set_color(color); //  设前景色
  Str16(file, 420, 490);
  Str16("用光标键或鼠标选择显示窗口。", 420, 520); //  显示提示语
  Str16("按 <ESC> 键,或光标点图外退出。", 420, 550);
  ch=0x40;
  do {
    if ((x != xold)||(y != yold)||(n==0)) { //  检查坐标是否改变
      if (n==1) //  背景保存否?
        put_image(xold-1, yold-1, dx+2, dy+2, buffer); //  恢复边界图像,步骤(2)
      get_image(x-1, y-1, dx+2, dy+2, buffer);  //  保存边界及内部数据,步骤(3)
      n=1; //  设置背景保存标志
      box(x-1, y-1, dx+2, dy+2, 1, color); //  显示小方框,步骤(4)
      xold=x;    yold=y; //  保存光标当前位置
      enlarge(x, y, dx, dy, 596, 30, 5);  //  小方框中图像放大5倍显示
      get_image(x, y, dx, dy, buff); //  取出小方框中数据
      for (j=0; j<dy; j++) {
        for (i=0; i<dx; i++) 
          Num16(buff[dx*j+i], 480+40*i, 140+20*j, 1);  // 显示小框内的像素数据
      }
    }
    f = KeyCoor(&xnew, &ynew); //  读键盘、鼠标状态及位置,动态显示步骤(1)
    if (f==1) { //  鼠标左键按下
      x=xnew-dx/2;    y=ynew-dy/2; //  按中心点位置计算窗口左上角坐标
    }
    else if (f==16) { //  有字符输入
      ch=getch(); //  输入字符
      if (ch)  continue; //  非功能键输入,不处理进入下一循环
      ch=getch(); //  输入功能键第二字节
      switch(ch) {
        case 0x48 : //  方框上移处理
          y-=(dy/2);    break; //  坐标上移半步长
        case 0x50 : //  方框下移处理
          y+=(dy/2);    break; //  坐标下移半步长
        case 0x4b : //  方框左移处理
          x-=(dx/2);    break; //  坐标左移半步长
        case 0x4d : //  方框右移处理
          x+=(dx/2);    break; //  坐标右移半步长
        default :       break; //  其他功能键输入不处理
      }
    }
    if ((y<1)||(y>=Dy-dy)||(x<1)||(x>=Dx-dx)) break;  //  光标出界,退出循环
  }
  while(ch != ESC);  //  不按 ESC 键,继续
}void T43(void)
{
  int  i, color;
  char file[40];
  char filea[][10]={"luyu8g","test8c","test_4","lu_msk1"}; //  图像文件名  SetTitle("T43:  256色及以下模式图像像素数据的显示");  VesaOn(0x103);           //  设置图像显示模式,256色分辨率800*600
  set_bkcolor(0); //  设置背景色
  for (i=0; i<4; i++) {
    fillw(0,0,swide,sdeep,0);                     //  用 0号色清屏
    strcpy(file,filepath);                            //  复制路径
    strcat(file,filea[i]);                          //  加上文件名
    strcat(file,".bmp");                //  加上文件后缀成文件全称
    loadBMPimage(file,0,0,400,400,0,0);               //  显示图像
    if (BitCount==1) color=8; //  设置前景色,二值图像
    else if (BitCount==4) color=15; //  16色图像
    else  color=220;  //  256色图像
    BitCount=8; //  对于二值和16色图像文件,修改模式类型使之也能显示
    show(file,400,400,8,16,color);        //  显示窗口数据和调色板
  }
}请各位高手看一下.