0

在 MFC 中制作我的突破游戏。我将位图信息存储到一个CDC对象(设备上下文对象)中,但是由于每个块会有不同的位图,所以我将相同的覆盖存储CDC m_blockDC到 a 中std::vector<CDC> m_blockStates,并且由于我有五种块类型,我将前面提到的向量存储到 a 中std::vector<std::vector<CDC>>,所以我可以使用枚举BLOCKPROPS及其与索引相关的命中属性访问每个块状态位图信息;因此,我将访问每个块状态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()of中,其中的CCreateWindow.cpp函数将用于绘制块,或者至少它应该是这样的。PaintBlock()OnTimer()

4

0 回答 0