有人做过滚屏截图吗,该怎么处理

有人做过滚屏截图吗
我想问下是怎么做到的?就是原理性的东西
------解决方案--------------------
在Windows操作系统下,做过滚屏和截图,我是这样弄的:

滚屏: 通过Bitblt等Windows的绘图API函数,不断修改绘制坐标来实现。

截图:先通过API获取屏幕HDC,将屏幕HDC内容先写到内存,然后按照BMP等文件格式,
将BMP头,图像数据等等全部写入文件。


------解决方案--------------------
什么是滚屏截图?翻页?每翻一页截图一次?
截图的程序我有
int SaveBitmapToFile(HBITMAP hBitmap,LPSTR lpFileName) 
{         
    HDC            hDC; //É豸ÃèÊö±í
    int            iBits;//µ±Ç°ÏÔʾ·Ö±æÂÊÏÂÿ¸öÏñËØËùÕ¼×Ö½ÚÊý
    WORD           wBitCount;//λͼÖÐÿ¸öÏñËØËùÕ¼×Ö½ÚÊý    
    DWORD          dwPaletteSize=0;//¶¨Òåµ÷É«°å´óС
    DWORD          dwBmBitsSize;//λͼÖÐÏñËØ×Ö½Ú´óС
    DWORD          dwDIBSize;// Î»Í¼Îļþ´óС
    DWORD          dwWritten;//дÈëÎļþ×Ö½ÚÊý
    BITMAP         Bitmap;//λͼ½á¹¹
    BITMAPFILEHEADER   bmfHdr;   //λͼÊôÐԽṹ    
    BITMAPINFOHEADER   bi;       //λͼÎļþÍ·½á¹¹
    LPBITMAPINFOHEADER lpbi;     //λͼÐÅϢͷ½á¹¹     Ö¸ÏòλͼÐÅϢͷ½á¹¹
    HANDLE          fh;//¶¨ÒåÎļþ¾ä±ú
    HANDLE            hDib;//·ÖÅäÄÚ´æ¾ä±ú
    HANDLE            hPal;//·ÖÅäÄÚ´æ¾ä±ú
    HANDLE          hOldPal=NULL;//µ÷É«°å¾ä±ú  
    
    //¼ÆËãλͼÎļþÿ¸öÏñËØËùÕ¼×Ö½ÚÊý    
    hDC = CreateDC("DISPLAY",NULL,NULL,NULL);    
    iBits = GetDeviceCaps(hDC, BITSPIXEL) * GetDeviceCaps(hDC, PLANES);    
    DeleteDC(hDC);
    
    if (iBits <= 1)        
        wBitCount = 1;    
    else if (iBits <= 4)        
        wBitCount = 4;    
    else if (iBits <= 8)        
        wBitCount = 8;    
    else if (iBits <= 24)
        wBitCount = 24;
    else if (iBits<=32)
        wBitCount = 24;
    
    
    //¼ÆËãµ÷É«°å´óС