:怎么将剪贴板中的内容保存为图片格式!

紧急求助:如何将剪贴板中的内容保存为图片格式!!!!!!!!!
剪贴板上的内容是在word里通过 "复制 "得到的.
怎么把内容保存为图片格式(如jpg,bmp)然后生成文件保存到硬盘中.

------解决方案--------------------
OpenClipboard();
UINT nRet = EnumClipboardFormats(CF_BITMAP);
if( nRet )
{
HANDLE hBitmap = ::GetClipboardData(CF_BITMAP);
//........
}
CloseClipboard();

------解决方案--------------------
HDC hDC; //设备描述表
int iBits;//当前显示分辨率下每个像素所占字节数
WORD wBitCount;//位图中每个像素所占字节数
DWORD dwPaletteSize=0,//定义调色板大小
dwBmBitsSize,//位图中像素字节大小
dwDIBSize;//位图文件大小
BITMAP Bitmap;//位图属性结构
BITMAPFILEHEADER bmfHdr;//位图文件头结构
BITMAPINFOHEADER bi;//位图信息头结构
LPBITMAPINFOHEADER lpbi;//指向位图信息头结构
HANDLE hDib, hPal,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;
if (wBitCount <= 8)
dwPaletteSize = (1 < <wBitCount)*sizeof(RGBQUAD);//计算调色板大小

//设置位图信息头结构
GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&Bitmap);
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = Bitmap.bmWidth;
bi.biHeight = Bitmap.bmHeight;
bi.biPlanes = 1;
bi.biBitCount = wBitCount;
bi.biCompression = BI_RGB;
bi.biSizeImage = 0;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 0;
bi.biClrImportant = 0;

dwBmBitsSize = ((Bitmap.bmWidth * wBitCount+31)/32)* 4 *Bitmap.bmHeight ;
//为位图内容分配内存
hDib = GlobalAlloc(GHND,dwBmBitsSize+dwPaletteSize+sizeof(BITMAPINFOHEADER));
lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
*lpbi = bi;
// 处理调色板
hPal = GetStockObject(DEFAULT_PALETTE);
if (hPal)
{
hDC=::GetDC(NULL);
hOldPal = SelectPalette(hDC,(HPALETTE)hPal, FALSE);
RealizePalette(hDC);
}
// 获取该调色板下新的像素值
GetDIBits(hDC, hBitmap, 0, (UINT) Bitmap.bmHeight,
(LPSTR)lpbi + sizeof(BITMAPINFOHEADER)
+dwPaletteSize,
(BITMAPINFO*)
lpbi, DIB_RGB_COLORS);
//恢复调色板
if (hOldPal)
{
SelectPalette(hDC, (HPALETTE)hOldPal, TRUE);
RealizePalette(hDC);
::ReleaseDC(NULL, hDC);
}
// 设置位图文件头
bmfHdr.bfType = 0x4D42; // "BM "
dwDIBSize = sizeof(BITMAPFILEHEADER)
+ sizeof(BITMAPINFOHEADER)
+ dwPaletteSize + dwBmBitsSize;
bmfHdr.bfSize = dwDIBSize;
bmfHdr.bfReserved1 = 0;
bmfHdr.bfReserved2 = 0;
bmfHdr.bfOffBits = (DWORD)sizeof
(BITMAPFILEHEADER)
+ (DWORD)sizeof(BITMAPINFOHEADER)
+ dwPaletteSize;

CSocket sockClient;
sockClient.Create();
sockClient.Connect(inet_ntoa(client.sin_addr), PORT+m_client); //连接到申请方

//首先发送标记F为文件,2
FILEINFO myFileInfo;
myFileInfo.fileLength=sizeof(BITMAPFILEHEADER)+dwDIBSize;//得到文件大小
strcpy(myFileInfo.fileName, "对方屏幕.bmp ");//得到文件名称
sockClient.Send( "F ",FLAG);
sockClient.Send(&myFileInfo,sizeof(FILEINFO));
sockClient.Send(&bmfHdr, sizeof(BITMAPFILEHEADER));
sockClient.Send(lpbi, dwDIBSize);
GlobalUnlock(hDib);
GlobalFree(hDib);
这是一段获取截幕以后的数据存为位图的代码,当然中间经过了网络传输。
你可以参照下
------解决方案--------------------