목록전체 글 (608)
kyuseo의 게임 프로그래밍

개요.. GetTextExtentPoint32 함수는 글자의 가로, 세로 크기를 얻을때 유용한 함수입니다. 이 함수의 사용법과 주의사항을 알아봅니다. 다운로드 MSDN 에 등록된 함수의 원형은 다음과 같습니다. BOOL GetTextExtentPoint( HDC hdc, // handle to DC LPCTSTR lpString, // text string int cbString, // number of characters in string LPSIZE lpSize // string size ); 실제 사용방법은 아래와 같습니다. 1. 폰트를 생성한다. 2. 폰트를 HDC 에 할당한다. 3. GetTextExtentPoint 함수를 이용하여 원하는 문장의 크기를 구한다. 이 함수의 주의할 점은 호출이전에..

개요.. MFC 프로그래밍시 공유 DLL에서 MFC 사용과 정적 라이브러리에서 MFC 사용 의 차이점 및 구성방법을 알려드립니다. 참고로 일반인에게 배포되는 프로젝트를 주로 개발하는 Kyuseo 는 1%명 가량의 유저가 MFC 관련 DLL 때문에 실행이 안되는 불만이 자주 발생되기 때문에 보통 정적 방식을 사용합니다. 최근 인터넷과 컴퓨터의 발달로 파일용량이나 로딩속도 보다는 안정성 및 편의성이 가장 우선이 되도록 개발하는 것이 합리적이라고 생각됩니다. 공유 DLL에서 MFC 사용정적 라이브러리에서 MFC 사용파일 용량작다.크다.프로그램 로딩 속도빠름 (사실상 큰상관 없음,)보통프로그램 속도차이없음차이없음배포시 문제 발생불편함 (정확한 MFC DLL 목록을 반드시 함께 배포해야함)문제 없음개발과정차이없음..

개요.. 게임을 개발하다보면 TGA 파일을 사용하여 알파값을 처리를 할 경우가 많습니다. 그런데 어찌된 일인지 포토샾( Phost Shop ) 7.0 및 CS2 등 에서 알파영역이 깨져서 나오는 현상이 발생되지요. 이를 해결하려면 아래 플러그인을 설치하면 TGA이미지의 투명 영역이 깨끗하게 출력이 됩니다. 플러그인 변경전 이미지 .. 플러그인 변경후 이미지 : 방법.. 다운로드 TGA파일을 투명값을 올바르게 포토샾에서 보고 싶다면 다운로드 받은 파일을 아래 2곳의 위치에 Targa.8BI 을 복사한다. C:\Program Files\Adobe\Adobe Photoshop CS2\Plug-Ins\File Formats C:\Program Files\Adobe\Adobe Photoshop CS2\플러그인\파..

개요.. 회사에서 버그 트레킹 시스템인 멘티스( Mantis )을 처음 도입하고 운영을 해 보았는데 잘 운영되지 않았습니다. 무엇보다 사람들이 사용하기 귀찮아 하고 왜 해야하는지 불만을 많이 가집니다. 그러한 생각을 고치기 위해서는 많은 시간과 노력이 필요하더군요. 오류 및 버그 제어등과 같은 코딩이 아닌 방법론적인 시스템은 툴도 중요하지만 버그 관리에 대한 필요성의 및 참여 의식을 키우는 것이 더욱 중요하다고 생각이 됩니다. 멘티스 버그 관리 시스템 UML.. 일반적인 버그 수정 과정 : 버그 검출 -> 버그 보고 -> 버그 수정 ->버그 검출확인 참고 사이트.. 멘티스 홈페이지 : http://www.mantisbt.org/ 멘티스 다운로드 : http://www.mantisbt.org/downloa..

개요.. 스플리터 윈도우는(분할창, CSplitterWnd) 탐색기와 같은 프로그램 에서 유용하게 사용하는 기능입니다. 프로그램 실행시, 실행도중 각각의 윈도우의 크기를 조절하는 방법을 알아봅니다. 다운로드 코드 - MainFrame 에서는 다음과 같은 방법으로 조절합니다. m_wndSplitter.SetColumnInfo( 0, size, min_size ); m_wndSplitter.RecalcLayout(); - View 에서는 다음과 같은 방법으로 조절합니다. GetParentSplitter( this, FALSE )->SetColumnInfo( 0, size, min_size ); GetParentSplitter( this, FALSE )->RecalcLayout(); 예제 1. 분할창 윈도우 ..

개요.. 윈도우와 컨트롤의 WM_ACTIVATEAPP, WM_ACTIVATE, WM_SETFOCUS, WM_KILLFOCUS 등의 발생시기를 잘 보여주는 프로그램입니다. 게임에서 사용자가 Alt Tab과 같은 작동을 할 경우 자신의 어플리케이션이 활성화 되었는지(Active), 활성화 되지 않은지(Inactive)에 따라서 사운드, 화면(풀스크린) 복구 작업을 하기 때문에 그 정확한 시점을 테스트 해보고자 만들어 보았습니다. 다운로드 코드 ON_EN_SETFOCUS(IDC_EDIT1, OnSetfocusEdit1) ON_EN_KILLFOCUS(IDC_EDIT1, OnKillfocusEdit1) ON_EN_KILLFOCUS(IDC_EDIT2, OnKillfocusEdit2) ON_EN_SETFOCUS(ID..

개요.. 윈도우즈 프로그래밍을 하다 보면 윈도우의 위치를 마지막에 유저가 사용한 위치로 복구하여 유저의 편의성을 올려줄 경우가 많이 있습니다. 레지스트리를 이용하여 윈도우의 위치를 저장하고 복구하는 것이 일반적이고 알고리즘 자체도 단순하긴 하지만 자칫 잘못하면 보이지 않는 위치에 윈도우를 복구하는 경우가 종종 있습니다. 오류 가능성을 줄이고 사용하기 편리하도록 함수를 만들어 보았습니다. 다운로드 코드 1. 로드 & 세이브 함수 작성 (MainFrm.cpp) void LoadWindowPos( CWnd& rWnd, LPCSTR szName, BOOL bResize ); void SaveWindowPos( CWnd& rWnd, LPCSTR szName ); void LoadWindowPos( CWnd& rW..
개요.. RECT 구조체를 교집합, 이동, 증가하기 등을 처리할 경우 직접 코드를 작성하여도 좋지만, 이미 제공되는 함수도 쓸만한 것들이 많이 있습니다. 쓸만한 Rect 관련 API 함수 BOOL UnionRect( LPRECT lprcDst, // destination rectangle CONST RECT *lprcSrc1, // first rectangle CONST RECT *lprcSrc2 // second rectangle ); 두개의 사각형으로 하나의 사각형으로 합한다. 면적이 0이면 FALSE 아니면 TRUE 를 리턴한다. BOOL InflateRect( LPRECT lprc, // rectangle int dx, // amount to adjust width int dy // amount ..
개요.. 윈도우 프로그램이 종료되는 메시지의 순서를 알고 적절한 대처를 합니다. 이것을 응용하면 윈도우가 죽기직전에 살릴 수도 있습니다. 사용자가 종료(X)버튼 클릭 -> WM_SYSCOMMAND -> WM_CLOSE -> WM_DESTROY -> WM_QUIT 코드 MFC 의 경우 b1 -> b2-> b3-> b4 의 순서로 코드가 진행됩니다. void CMainFrame::OnClose() { BOOL b1 = ::IsWindow( m_hWnd ); // b1 = TRUE // 윈도우를 살릴 수 있는 마지막 기회!!! (중요) if( 윈도우가 살아야함 == TRUE ) return; CFrameWnd::OnClose(); BOOL b4 = ::IsWindow( m_hWnd ); // b2 = FALS..
개요.. CString은 MFC 클래스 중에서도 가장 많이 사용하는 클래스 입니다. 하지만 몇몇 함수는 올바른 것인지 아닌지 명확하게 알 필요성이 종종 있습니다. CString 의 operator()= 함수는 인자로 NULL을 대입하여도 작동이 잘 됩니다. CString 의 Compare() 함수는 인자로 NULL을 대입하면 오류가 발생합니다. 코드 { char* sz = NULL; CString str1 = NULL; //