我有點新使用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 2013-05-12 19:52:35
@olevegard然後它不顯示。從試錯中,我發現分數顯示在窗口背後。在這種情況下,遊戲畫面。 – Xellos 2013-05-18 14:03:36