본문 바로가기

전체 글71

[WIN32 API]기본 class 작업 기본 class 작업 저번에 정리한 API 코드를 class화 하는 작업입니다. 일단 코드를 먼저 보도록 하겠습니다. class C_MYWIN { private: HINSTANCE m_hInstance; HWND m_hWnd; private: static C_MYWIN *m_pMyWin; public: static void createWin(); static C_MYWIN *getWin(); static void releaseWin(); private: C_MYWIN(); static LRESULT CALLBACK wndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK myProc(HWND hWnd, UINT mes.. 2018. 4. 25.
[WIN32 API]HINSTANCE와 자료형 의미 설명 프로그램의 HANDLE을 의미한다. 사용자가 만드는 것이 아니라 프로그램 시작할 때 운영체제가 제공해 준다. 윈도우 운영체제에서 실행되는 프로그램들을 구별하기 위한 ID값을 의미한다. window Handle과 instance는 백업을 하고 사용한다. HINSTANCE 핸들은 보통 실행되고 있는 Win32 프로그램이 메모리 상에 올라가 있는 시작 주소 값을 갖고 잇습니다. wWinMain()에서 한 번 들어오는 값으로 값을 저장해서 사용합니다. 객체 지향 프로그래밍(OOP)에서 인스턴스(instance)는 해당 클래스의 구조로 컴퓨터 저장공간에서 할당된 실체를 의미한다. 즉, 메모리에 올라가 있는 실체를 의미한다. 프로그램의 시작 주소값을 의미한다. WCHAR 16bit 유니코드 문자 집합입니다. (1바.. 2018. 4. 25.
[WIN32 API]기본 API 정리 및 코드 설명 API visual studio 2017에서 Windows 데스크톱 응용 프로그램을 선택하고 프로젝트를 생성하면 기본 API 코드가 작성되어 있는 프로젝트를 생성합니다. 하지만 이 기본 프로젝트 코드가 보기 힘들기 때문에 정리를 하는 과정이 필요합니다. 정리를 하면 다음과 같은 코드가 되고 실행하면 아무 기능 없는 기본 윈도우 창을 띄어줍니다. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { UNREFERENCED_PARAMETER(h.. 2018. 4. 25.
[DirectX9]SDK 경로설정 및 라이브러리 연결 DiractX9 설치 및 설정 DirectX9 최신버전 (2010-june)을 설치했으면 이제 프로젝트에 추가해서 사용하면 되는데, 이때 SDK 경로설정과 라이브러리 연결을 해주어야 합니다. SDK 경로 설정 먼저 SDK 경로 설정을 하도록 합니다. 그러기 위해서 프로젝트 속성에서 VC++ 디렉터리로 들어갑니다. 프로젝트 속성 -> VC++ 디렉터리에서 포함 디렉터리 에는 아래 보이는 "C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include" 경로를 추가하고 라이브러리 디렉터리는 아래 보이는 "C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86" 경로를 추가한다. 이 2개의 경로를.. 2018. 4. 23.
[visual studio]release 실행파일 만들기 release 실행파일 만들기 일단 제 프로젝트 속성을 보겠습니다. 1. 구성 속성 -> 일반 -> 출력 디렉터리 "$(SolutionDir)bin" 로 변경 2. 구성 속성 -> 디버깅 -> 작업 디렉터리 "$(SolutionDir)bin" 로 변경 위의 두 개 설정은 현재 이 프로젝트에서 bmp 파일을 사용하는데, 이 bmp 파일을 솔루션 디렉터리에 있는 bin 폴더에 저장해서 사용하기 위해 설정한 것입니다. 3. 구성 속성 -> 일반 -> 대상 이름 game_d로 변경 game_d로 뒤에 _d를 붙인 것은 디버깅이라는 것을 명시적으로 알려주기 위함입니다. 4. 구성 속성 -> 링커 -> 입력 ->추가종속성에 winmm.lib 추가 timeGetTime() 함수를 사용하기 위해 추가한 것입니다. 이제.. 2018. 4. 18.
[C++ STL] map, iterator를 통한 데이터 추가 map에 iterator를 통한 데이터 추가 하는 방법 int main() { std::map mData; int nId = 0; int nData = 10; for (int i = 0; i < 5; i++) { mData.insert(std::map::value_type(nId, nData)); nId += 2; nData += 2; } std::map::iterator iter = mData.find(5); if (iter == mData.end()) { mData.insert(iter, std::map::value_type(5, 15)); // mData.insert(std::map::value_type(5, 15)); } else { printf("존재 \n"); } iter = mData.beg.. 2018. 3. 18.