본문 바로가기

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... 더보기
GetDlgItem CWnd* GetDlgItem( int nID ) const; void GetDlgItem( int nID, HWND* phWnd ) const; Parameters nID Specifies the identifier of the control or child window to be retrieved. phWnd A pointer to a child window. Return Value A pointer to the given control or child window. If no control with the integer ID given by the nID parameter exists, the value is NULL. The returned pointer may be temporary and sh.. 더보기
열혈강의 Visual C++ 2008 MFC 윈도우 프로그래밍 (전문 윈도우 개발자로 가기 위한 빠른 선택) 1. 전문 윈도우 개발자를 양성한다는 목표로 내용 구성 2. 실무 활용도가 높은 검증된 예제를 수록 3. MFC v9.0 기반의 최신 프로그래밍 기법 수록 4. 윈도우 시스템 프로그래밍까지 한 번에 학습 5. 윈도우 프로그래밍을 배우려는 개발 입문자 6. 실전 감각을 익히고자 하는 초급 개발자 7. MFC Feature Pack과 같은 최신 기법을 배우려는 중급 개발자 8. 윈도우 시스템 프로그래밍을 빠르게 정리하고자 하는 독자 [예스24 제공] #. 목차 [들어가기에 앞서] Part 1 윈도우 프로그래밍의 기본 1장 윈도우 프로그래밍 모델 1.1 윈도우 프로그래밍의 시작(HelloWorld) 1.2 메시지 큐(Message Queue) 1.3 윈도우의 등록과 생성 1.4 메인 메시지 루프 1.5 윈도우.. 더보기
내적(dot product) 외적(cross product) 이용 내적 밝기 계산에서 대표적으로 사용되는데, 면에 수직인 벡터(흔히 노말벡터라 부르는)과 빛방향벡터의 사이각을 이용한 내적값으로 밝기를 구하게 됩니다. (단위 벡터를 사용하므로, 면에수직일때 원래밝기, 면에 가까워질수록 어두워집니다. ) 외적 주로 곡면 또는 평면의 한 점에 대해 서로 다른 두 접선 벡터가 주어질 때, 그 표면에 수직한 법선 벡터를 구하는데 사용한다. 두 3D 벡터 P와 Q의 외적은 PXQ로 표기하며, 교환 법칙이 성립하지 않으므로 A와 B의 순서에 주의해야 한다. 즉, PXQ = [Py*Qz - Pz*Qy, Pz*Qx - Px*Qz, Px*Qy - Py*Qx] 교환법칙은 PXQ = -QXP 임을 주의해야 한다. 표면의 법선 벡터 계산 삼각형의 면적 계산 더보기
방향넣으면 각도 출력하는 함수 float CalAngle(D3DXVECTOR3 vDrt) { D3DXVECTOR3 vP1, vP2; D3DXVECTOR3 vCrossResult; float fDotResult; vP1 = D3DXVECTOR3(-1, 0, 0); vDrt = -1.0f * vDrt; //노말라이즈 D3DXVec3Normalize(&vP2, &vDrt); // 외적구해서 내적 방향3을 정한다. D3DXVec3Cross(&vCrossResult, &vP1, &vP2); // 내적구해서 각도를 구한다 fDotResult = D3DXVec3Dot(&vP1, &vP2); if(vCrossResult.y > 0) return acosf(fDotResult); else if(vCrossResult.y < 0.0f) { return.. 더보기
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).. 더보기
기본 세팅 파일 보호되어 있는 글입니다. 더보기
WM_MOUSELEAVE 메세지 VS 2005 에서 설정 방법 VS 2008 에는 있지만 2005 버전에는 없다 따라서 직접 추가해야됨 // 함수 등록 LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam) // 메세지 맵에 추가 ON_MESSAGE(WM_MOUSELEAVE, &CTrackWnd::OnMouseLeave) // CTrackWnd::OnMouseLeave 는 클래스에서 등록한 함수 더보기