본문 바로가기

WIN32 API4

[WIN32 API] 더블 버퍼링(Double Buffering) 더블 버퍼링 win32 API에서 비트맵 파일을 화면에 뿌려줄 때, 계속해서 그리는 작업을 반복하기 때문에 비트맵 이미지가 깜빡이는 현상이 나타나게 됩니다. 이런 현상을 해결하기 위해서 더블버퍼링이라는 방법을 사용해야 합니다. 더블 버퍼링이란 메모리 공간 내에서의 출력이 더 빠르다는 점을 이용하여 메모리에 모든 출력 내용을 저장한 뒤 메인 HDC로 옮기는 기술입니다. 즉, 매번 출력 내용을 화면에 바로 그리지 않고, 그릴 내용을 버퍼에 다 그려준 뒤 이 버퍼를 화면에 그려주는 것입니다. 그림으로 보자면 다음과 같습니다. [그림 출처 : http://movefast.tistory.com/6] 코드 API에서 더블 버퍼링을 어떻게 사용하는지 코드를 보면서 설명하겠습니다. 전체 코드는 마지막에 압축파일로 제공.. 2018. 5. 3.
[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.