hover:程序员大本营2000 VC+VB CD有个文章(中文)
将如何将截取当前窗口中的一段图象到Clipboard

解决方案 »

  1.   

    CDC *pDC;
    pDC = GetDC();
    CBitmap bitmap;
    CDC dcMemory;
    bitmap.LoadBitmap(bitmap);
    dcMemory.CreateCompatibleDC(pDC);
    dcMemory.SelectObject(&bitmap);
    pDC->BitBlt(130,31,150,200,&dcMemory,0,0,SRCCOPY);
    你只要把你要的图象存到bitmap里面就可以了,至于怎么存,跟这段程序差不多,其实是逆向,自己翻翻MSDN吧
      

  2.   

    忘记说了,你多看看bitblt()这个函数,和它相关的函数,以及使用,应该会对你帮助。
    这几个类比较重要
    CDC,CBitmap
      

  3.   

    void CMailDlg::OnPaint() 
    {
    CPaintDC dc(this); // device context for painting

    // TODO: Add your message handler code here
    CBitmap bmp;
    CDC mdc;
    CRect rc(0,0,30,30); mdc.CreateCompatibleDC(&dc);
    bmp.CreateCompatibleBitmap(&dc,rc.Width(),rc.Height());
    CBitmap *pOldbmp=mdc.SelectObject(&bmp);
    dc.TextOut(0,0,"str");
    mdc.BitBlt(0,0,rc.Width(),rc.Height(),&dc,0,0,SRCCOPY); CDC mdc2;
    mdc2.CreateCompatibleDC(&dc);
    mdc2.SelectObject(&bmp);
    dc.BitBlt(0,0,rc.Width(),rc.Height(),&mdc2,30,30,SRCCOPY);
    }To:cloudstrife(c_cloud) 还是绘不出来。上面的程序错在哪里? 图像是保存在内存DC里呢还是在CBitmap里好呢,可以把它们做成类成员吗?
      

  4.   

    CDC mdc2;
    mdc2.CreateCompatibleDC(&dc);
    mdc2.SelectObject(&bmp);
    dc.BitBlt(0,0,rc.Width(),rc.Height(),&mdc2,30,30,SRCCOPY);
    改成:CDC mdc2;
    mdc2.CreateCompatibleDC(&dc);
    mdc.SelectObject(pOldbmp);  //将bmp释放
    pOldbmp = mdc2.SelectObject(&bmp);
    dc.BitBlt(30,30,rc.Width(),rc.Height(),&mdc2,0,0,SRCCOPY);
    //这里原来是dc.BitBlt(0,0,rc.Width(),rc.Height(),&mdc2,30,30,SRCCOPY);
    //而mdc2的(30,30)位置已经超出它的范围了,应该改成(0,0)才对。mdc2.SelectObject(pOldbmp);
    //bmp.DeleteObject();
    mdc.DeleteDC();
    mdc2.DeleteDC();图像可以保存在一个memory DC中,前提是这个memory DC中已经选入了一个CBitmap。它们都可以做成类的成员。但是别忘了在类销毁时释放它们。
      

  5.   

    图象存在cbitmap里面,再用dc导入