剪切板上有一幅BMP格式的图像,获得图像的数据区域,并显示该幅图像!希望有做过类似方面的不吝赐教,拷些代码也行!谢谢各位大侠了!

解决方案 »

  1.   

    先把数据写到一个buffer中,然后根据里面的数据来显示图像.
      

  2.   

    http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380147d8c8c4668d4e419ce3b4c413037bfa6663f405a8e906b6075ab4b59bbf13573670123b5999fcc4189ac925f75ce786a6459db0144dc46fb9a5124b137e02bfedb1ff0cb8125e7a5c5d2af4323c844727d97f1fb4d7014dd19fb0347e6b1ed4d&p=9a658d128d904ea81fbd9b7f0a40&user=baidu
    这个帖子中有详细的剪贴位图的方法.
      

  3.   


    三、位图的操作位图的操作稍微复杂一点,下面这个例子显示了如何在剪贴板保存位图:if(OpenClipboard()){EmptyClipboard();CBitmap * junk = new CBitmap();CClientDC cdc(this);CDC dc;dc.CreateCompatibleDC(&cdc);CRect client(0,0,200,200);junk->CreateCompatibleBitmap(&cdc,client.Width(),client.Height());dc.SelectObject(junk);DrawImage(&dc,CString("Bitmap"));//复制数据到剪贴板SetClipboardData(CF_BITMAP,junk->m_hObject);CloseClipboard();delete junk;}下面的代码显示了如何从剪贴板上获得位图数据:if(OpenClipboard()){//获得剪贴板数据HBITMAP handle = (HBITMAP)GetClipboardData(CF_BITMAP);CBitmap * bm = CBitmap::FromHandle(handle);CClientDC cdc(this);CDC dc;dc.CreateCompatibleDC(&cdc);dc.SelectObject(bm);cdc.BitBlt(0,0,200,200,&dc,0,0,SRCCOPY);CloseClipboard();
      

  4.   


    //获取剪切板中的数据保存到HBITMAP对象中
    HBITMAP hBitmap = NULL;
    if (::OpenClipboard(this->m_hWnd))
    {
    if (::IsClipboardFormatAvailable(CF_BITMAP))
    {
    hBitmap = (HBITMAP)::GetClipboardData(CF_BITMAP);
    }
    else
    return FALSE;
    }
    ::CloseClipboard();//显示到当前的视图中
    CBitmap t_bitMap;
    t_bitMap.Attach(hBitmap);
    CDC compatibledc;
    CRect rect;
    CDC * pDC;
    pDC = GetDC();
    compatibledc.CreateCompatibleDC(pDC);
    compatibledc.SelectObject(&t_bitMap);
    GetClientRect(&rect);
    BITMAP bmp;
    t_bitMap.GetBitmap(&bmp);
    pDC->StretchBlt(0,0,rect.Width(),rect.Height(),
    &compatibledc,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY); 
    ReleaseDC(pDC);