윈도우즈 api 코드 질문입니다
조회수 366회
define WM_USER 0x0400
define UM_GAMEOVER WM_USER+4
case WM_LBUTTONDOWN: hdc = GetDC(hWnd);
q.x = LOWORD(lParam);
q.y = HIWORD(lParam);
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 2; j++) {
if (PtInRect(&Blocks[i][j], q)) {
if (m_Glass[i][j])
MessageBox(hWnd, _T("강화"), _T("알림"), MB_OK);
else
MessageBox(hWnd, _T("깨짐"), _T("알림"), MB_OK);
}
}
}
if (CheckGameOver())
SendMessage(hWnd, UM_GAMEOVER, 0, 0);
ReleaseDC(hWnd, hdc);
return 0;
case UM_GAMEOVER: _stprintf_s(str, _T("Do you want to restart?"));
hitPosition = MessageBox(hWnd, str, _T("confirm"), MB_YESNO | MB_ICONQUESTION);
if (hitPosition == IDNO)
DestroyWindow(hWnd);
else {
SendMessage(hWnd, WM_CREATE, 0, 0);
InvalidateRect(hWnd, NULL, TRUE);
}
return 0;
int CheckGameOver() { if (m_Glass == 0) return 1; else return 0; }
어제 윈도우즈 api에 관련해서 질문한 사람입니다. 또 다른 문제가 생겨서 질문 드립니다. 제 코드의 목적은 위에 보시다시피 게임오버 조건이 만족되었을때 게임을 종료하게 만드는게 목적입니다. CheckGameOver()함수에서 m_Glass가 0이면 1을 반환해 UM_GAMEOVER로 SendMessage하여 게임 종료하게 만드는게 목적인데, 어떤 부분이 틀려서 작동이 안되는지 모르겠습니다. 답변해주시면 감사하겠습니다
댓글 입력