错误“ CDC :: CDC(const CDC&)”:尝试引用已删除的函数MFCBreakout

时间:2018-08-09 19:19:37

标签: c++ mfc dialog device-context deleted-functions

在MFC中制作突破游戏。我将位图信息存储到CDC对象(设备上下文对象)中,但是由于每个块都有不同的位图,因此我将相同的覆盖的CDC m_blockDC存储到std::vector<CDC> m_blockStates中,并且由于我有五种块类型,我将前面提到的向量存储到std::vector<std::vector<CDC>>中,因此我可以使用枚举BLOCKPROPS及其通过索引显示的hit属性访问每个块状态位图信息;因此,我将使用m_blockStates[BLOCKTYPE][CBlock.GetHits()]

访问每个块状态

当我尝试运行程序时,出现错误'CDC::CDC(const CDC &)': attempting to reference a deleted function

这是将m_blockDC存储到二维向量中的方式:

void CCreateWindow::LoadBlock(std::vector<LPCWSTR> FileMap, BLOCKPROP BlockProperty) 
{
    for (int i = 0; i < FileMap.size(); i++)
    {
        HANDLE blockBitmap = LoadImage(0, FileMap[i], IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); //(Instance, FileSrc, Type, PartX, PartY, Process)
        m_blockCBMP.Attach(reinterpret_cast<HBITMAP>(blockBitmap));
        pDC = this->GetDC();
        m_blockDC.CreateCompatibleDC(pDC);

        switch (BlockProperty)
        {
        case TUFF:
            m_blockStateArray[TUFF].push_back(m_blockDC);
            break;
        case STRD:
            m_blockStateArray[STRD].push_back(m_blockDC);
            break;
        case WEAK:
            m_blockStateArray[WEAK].push_back(m_blockDC);
            break;
        case SPCL:
            m_blockStateArray[SPCL].push_back(m_blockDC);
            break;
        case INDS:
            m_blockStateArray[INDS].push_back(m_blockDC);
            break;
        default:
            break;
        }
    }

    //Get BitmapSize
    m_blockDC.SelectObject(&m_blockCBMP);
    m_blockCBMP.GetBitmap(&m_blockBMP);
}

此代码用于OnInitDialog()的{​​{1}}中,并且CCreateWindow.cpp中的函数PaintBlock()将用于绘制块,或者至少是这样假设的成为。

0 个答案:

没有答案