Создание моей Breakout Game в MFC. Я храню растровую информацию в CDC
объект (Device Context Object), но поскольку для каждого блока будут разные битовые карты, я сохраняю одну и ту же перезаписанную CDC m_blockDC
в std::vector<CDC> m_blockStates
и так как у меня есть пять типов блоков, я сохраняю ранее упомянутый вектор в std::vector<std::vector<CDC>>
так что я могу получить доступ к каждой информации о растровом состоянии блока, используя enum 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()
из CCreateWindow.cpp
и функция PaintBlock()
в OnTimer()
будет использоваться для рисования блоков, или, по крайней мере, так оно и должно быть.
Задача ещё не решена.
Других решений пока нет …