본문 바로가기

Programming/API

timeGetTime & GetTickCount timeGetTime The timeGetTime function retrieves the system time, in milliseconds. The system time is the time elapsed since Windows was started.DWORD timeGetTime(VOID); Parameters This function does not take parameters. Return Values Returns the system time, in milliseconds. GetTickCount The GetTickCount function retrieves the number of milliseconds that have elapsed since the system was started... 더보기
GetMessage vs. PeekMessage 우리는 지금까지 WinMain의 메인 루프에서 GetMessage라는 함수를 통해 메시지를 받아 처리하였다. 그리고 스크린에 무언가를 그리기 위해서는 WM_PAINT라는 메시지가 들어올 때에만 처리하였다. 이것은 무엇을 의미하는가?! 맞다. WM_PAINT 메시지가 들어오지 않으면 화면에 그리는 작업을 하지 않는다는 것이다. 게임과 같은 프로그램을 생각해보자. 게임과 같은 프로그램에서는 쉴새없이 스크린에 무언가를 그리는 작업을 한다. 당연히 쉴새없이 그려야지만 케릭터의 이동이나 다른 모든 화면의 움직임이 끊기지 않고 부드럽게 이어질 수 있는 것이다. 만약, 이러한 프로그램에서 GetMessage를 통해 메시지를 처리한다면 어떻게 될까? 결과는 불 보듯 뻔하다. 우리는 마우스를 한 손에 부여 잡고 (지속적.. 더보기
SendMessage vs. PostMessage Postmessage 의 경우 윈도우의 메시지 큐에 메시지가 들어가게 되고, 윈도우 프로스저에게 이 메시지를 처리하도록한다. 메시지를 큐에 넣기만 하고 바로 리턴하므로 메시지를 붙인 후 즉시 다른 작업을 할 수 있게 되지만 큐에 대기하고 있는 다른 메시지가 있으면 뒤에 붙은 메시지는 곧바로 처리되지 않는 특징을 가지고 있다. 큐에 붙여진 메시지는 GetMessage 에 의해 읽혀지고, DispatchMessage 함수에 의해 윈도우 프로시저로 보내어져 처리가 된다. SendMessage 는 메시지를 큐에 넣는 것이 아니라 곧바로 윈도우 프로시저로 보내 즉각 처리하도록 하며 메시지가 완전히 처리되기 전에는 리턴하지 않고, 블록시켜서 대기 상태로 만든다. 말하자면, SendMessage는 메시지를 바로 처리.. 더보기
프레임 출력 GetTickCount() 이용 void Frame(void) { HDC hdc; static DWORD dwFTime; static DWORD dwNum; static DWORD dwFrame; char szBuf[128]; DWORD dwTime = GetTickCount(); if(dwFTime < dwTime) { dwFTime = dwTime + 1000; dwFrame = dwNum; dwNum = 0; } else { dwNum++; } hdc = GetDC(g_hWnd); wsprintf(szBuf, "%d", dwFrame); TextOut(g_Image[IMG_BACK].MemDC, 10, 10, szBuf, strlen(szBuf)); wsprintf(szBuf, "%d", nCnt).. 더보기
기본 세팅 파일 보호되어 있는 글입니다. 더보기