Ошибка «CDC :: CDC (const CDC & amp;)»: попытка сослаться на удаленную функцию MFCBreakout

Создание моей 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() будет использоваться для рисования блоков, или, по крайней мере, так оно и должно быть.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]