已经确定就是这函数,估计是一秒钟拷贝一次,一到GetDIBits就占到70%,奇怪.
用的办法跟大家的一样就是先生成HBITMAP,然后在GetDIBits.

解决方案 »

  1.   

    CBitmap *g_b;
    BITMAP g_BMP;
    HBITMAP hBitmap=pDoc->CopyScreenToBitmap(/*&R*/);
    g_b=CBitmap::FromHandle(hBitmap);
    g_b->GetBitmap( &g_BMP);
    DWORD dwCount;
    dwCount=g_BMP.bmWidthBytes*g_BMP.bmHeight;
    g_b->GetBitmapBits(dwCount, LPVOID (pDoc->m_test_buf[nFrame]));
    如果是24位,你得到的直接是位图数据区,接下来你应该知道该怎么做了,加上文件头,信息头就成了bmp了。如果是32位,简单的方法是直接略去alpha通道就成了24位了,如果是16为,建议还是用GetDIBits吧:)