1. SAFE_DELETE. 1. 매크로 함수. //매크로 함수. #define SAFE_DELETE(p)if(p){ delete p; p = NULL; } 1. 단점. 1. 코드 비대화. 2. 컴파일 타임에 오류 탐지 불가. 2. 장점. 1. 모든 타입에 호환. 2. 함수 템플릿. //함수 템플릿. template static void SAFE_DELETE(T& Temp) { if (Temp) { delete Temp; Temp = NULL; } } 1. static 키워드를 통해 코드 비대화를 방지. 2. :: 연산자를 통해 명시적으로 static 키워드의 사용을 알림. 3. & 참조자는 댕글린 포인터를 방지. CObj* pObj = new CPlayer; ::SAFE_DELETE(pObj);//복사..
1. 핸들. 1. 포함. 1. 불러오는 개념x. 2. 복사 & 붙여넣기 개념o. 2. extern 키워드. 1. 전역 변수의 범위는 선언된 파일. 2. 포함을 통해 복사 & 붙여넣기를 통해 증가하는 메모리를 막기 위해서 모든 파일에 공유되는 변수들은 extern으로 선언. 3. 윈도우 핸들. HWND g_hWnd; BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd; hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, rc.right - rc.left, rc.bottom - rc.top, NULL, NULL, hInstance, NULL); if..
1. DC. 2. 메세지. 1. WM_CREATE. 1.CreateWindow(Ex) 함수에 의해 윈도우가 생성될 때 호출. 2. 한 번 호출. 3. 주로 윈도우에 관련된 초기화 작업을 할 때 사용. 3. 기타. 1. 중복 선. 1. 선의 충돌을 판별하기 위해 중복을 방지. 2. SetTimer 함수. 1. 세번째 인수 uElapase는 1/1000초 단위로 타이머의 주기를 설정. 3. InvalidateRect 함수. 1. 함수로 변경된 부분을 무효화하여 WM_PAINT 메시지를 통해 화면을 다시 그림. 2. 세번째 인수 bErase를 TRUE로 설정해 주어야 이전에 출력되어 있던 부분을 무시. 4. 더블 버퍼링. 1. 화면 출력의 깜박임을 해결할 수 있는 근본적이고도 완전한 방법.
1. API. 1. 특징. 1. WBCS를 사용. 2. 메시지 구동 시스템 2. 주요 개념. 1. 메세지. 1. GetMessage 함수. 2. PeekMessage 함수. 3. TranslateMessage 함수. 4. DispatchMessage 함수. 5. 메세지 큐. 2. 핸들. 1. void* 타입. 2. 응용 프로그램마다 독립적인 창을 의미. 3. 주요 변수. 1. hInstance. 1. 같은 응용 프로그램마다 독립적인 창을 의미. 2. WPARAM. 1. 키보드에 대한 정보. 3. LPARAM. 1. 마우스에 대한 정보. 4. time. 1. 메세지 타임에 대한 정보. 5. POINT. 1. 마우스 위치에 대한 정보. 6. 함수 호출 규약. #define CALLBACK __stdcall ..