在 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()