哪位大侠能帮小弟写一个CDib的拷贝函数,能将内存中的CDib结构拷贝到当前的CDib中,CDib::Copy(CDib*dib)
    {
         .....//拷贝
    }
或者写个"="的重载操作也行。

解决方案 »

  1.   


    /*************************************************************************
     *
     * 函数名称:
     *   CopyHandle()
     *
     * 参数:
     *   HGLOBAL h          - 要复制的内存区域
     *
     * 返回值:
     *   HGLOBAL            - 复制后的新内存区域
     *
     * 说明:
     *   拷贝内存块
     *
     ************************************************************************/HGLOBAL CDIB::CopyHandle (HGLOBAL h)
    {
    if (h == NULL)
    return NULL; // 获取指定内存区域大小
    DWORD dwLen = ::GlobalSize((HGLOBAL) h);

    // 分配新内存空间
    HGLOBAL hCopy = ::GlobalAlloc(GHND, dwLen);

    // 判断分配是否成功
    if (hCopy != NULL)
    {
    // 锁定
    void* lpCopy = ::GlobalLock((HGLOBAL) hCopy);
    void* lp     = ::GlobalLock((HGLOBAL) h);

    // 复制
    memcpy(lpCopy, lp, dwLen);

    // 解除锁定
    ::GlobalUnlock(hCopy);
    ::GlobalUnlock(h);
    } return hCopy;
    }
      

  2.   

    如何将整个CDib结构拷贝到另一个中呢?被拷贝的也是一个CDib结构,在CDib结构中HGLOBAL m_hGlobal 是private的。