Я немного новичок в использовании MFC и VC++ как таковых, но я делаю это как часть курса, и я должен придерживаться VC++.Показать текст в приложении на основе MFC
http://www.cprogramming.com/tutorial/game_programming/same_game_part1.html
Это учебник я следовал, чтобы сделать простой SameGame. Однако, когда я пытаюсь отобразить оценку, оценка отображается под или вне моего окна приложения, хотя я показывал результат до вызова updateWindow(). Я пробовал разные методы, но я потерял его здесь.
Вот код, я использую для отображения счет:
void CSameGameView::updateScore()
{
CSameGameDoc* pDoc = GetDocument();
CRect rcClient, rcWindow;
GetClientRect(&rcClient);
GetParentFrame()->GetWindowRect(&rcWindow);
int nHeightDiff = rcWindow.Height() - rcClient.Height();
rcScore.top=rcWindow.top + pDoc->GetHeight() * pDoc->GetRows() + nHeightDiff;
rcScore.left=rcWindow.left + 50;
rcScore.right=rcWindow.left + pDoc->GetWidth() - 50;
rcScore.bottom=rcScore.top + 20;
CString str;
double points = Score::getScore();
str.Format(_T("Score: %0.2f"), points);
HDC hDC=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
COLORREF clr = pDoc->GetBoardSpace(-1, -1); //this return background colour
pDC->FillSolidRect(&rcScore, clr);
DrawText(hDC, (LPCTSTR) str, -1, (LPRECT) &rcScore, DT_CENTER);
}
Спасибо за любую помощь, и я прошу прощения, если вопрос не имеет смысла, или в неоднозначной.
Что произойдет, если вы жестко закодируете 'rcScore.top' какое-то значение, которое, как вы знаете, находится внутри вашего окна? Например, 'rcScore.top = 100;' – olevegard
@olevegard, тогда он не отображается. Из проб и ошибок я узнал, что оценка отображается за тем, что есть в окне. В этом случае игровой экран. – Xellos