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);     
  } 
  //创建位图文件       
  fh = CreateFile(FileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,     
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN,NULL);     
  if(fh == INVALID_HANDLE_VALUE) return   FALSE;     
  //设置位图文件头     
  bmfHdr.bfType = 0x4D42; //"BM"     
 dwDIBSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+dwPaletteSize+dwBmBitsSize;       
  bmfHdr.bfSize = dwDIBSize;     本文来自辣.文~论^文·网原文请找腾讯32,49114
  bmfHdr.bfReserved1 = 0;     
  bmfHdr.bfReserved2 = 0;     
 bmfHdr.bfOffBits=(DWORD)sizeof(BITMAPFILEHEADER)   +(DWORD)sizeof(BITMAPINFOHEADER) + dwPaletteSize;     
  //写入位图文件头       WriteFile(fh,(LPSTR)&bmfHdr,sizeof(BITMAPFILEHEADER),&dwWritten,NULL;     
  //写入位图文件其余内容     
  WriteFile(fh,(LPSTR)lpbi,dwDIBSize,&dwWritten,NULL);     
论文网http://www.751com.cn/  
  //清除       
  GlobalUnlock(hDib);     
  GlobalFree(hDib);     
  CloseHandle(fh);     
    return   TRUE;    
}
(3)读取保存的位图发送到客户端并启动定时器
void CMY_UdpIocpSrvDlg::OnStratBroadcast() 
{
  //响应广播屏幕按钮函数
  // TODO: Add your control notification handler code here
  GrabScreen(); //获取屏幕位图
  SaveBitmapToFile(m_hbmScreen,"C:\\1.bmp"); //保存屏幕位图到本机
 << 上一页  [11] [12] [13] [14] [15] [16] [17] [18] [19] [20]  ... 下一页  >> 
C++的多媒体屏幕广播教学系统设计 第20页下载如图片无法显示或论文不完整,请联系qq752018766