-
HDC, HBITMAPCode 2020. 6. 6. 16:50
HDC = 출력에 관련하는 툴. hdc 는 화면 자체를 도화지로 가지는 HDC 이며, 따로 생성하는 HDC 들은 hdc를 인자로 받아서 그에 대한 속성(혹은 특징)을 복사하여 데이터화 시켜 연산을 하는데 최적화 시켜준다. 그러므로 hdc 를 제외한 개발자 생성 HDC들은 출력되지는 않지만 연산은 마친 상태로, 화면에 보이지는 않아도 같은 작업을 실행중이다. 개발자 생성 HDC 들을 hdc로 출력해줘야 화면에 보이게 됨! (나만 알아볼 수 있으면 된 거 라고 생각함ㅋㅋ) HBITMAP = 출력물을 그려주는 도화지.
-
메탈슬러그 중간과정 2 - backgroundCode/Winapi 2020. 6. 3. 02:16
* 잘못 생각하고 있었자너....? * class 두개를 만들어서 좌표값을 맞추어 저장한 뒤 좌표값을 이동시키기 * POINT 변수 사용 * 좌표값은 Image 가 직접 들고 있을 수 있도록 private 변수로 선언하여 setter/getter 함수 생성 * 이미지의 좌표값은 무조건 본인이 들고 있을 수 있도록! * 이미지 출력하는 함수는 따로 두었음. * background class 에서 불러와서 사용하는 식. * setposition 해서 좌표값 이동하는 방식으로 이미지 이동시키기! 조금 더 생각하는 버릇 들이기. 아직도 부족함. 다양한 방식으로 생각하는 방법을 익혀야 할 것 같은데 그게 잘 안 되는 듯. 코드처럼 생각하기 버릇.... 버릇.. 버릇.. 개롭;;;
-
메탈슬러그 중간과정 1 - backgroundCode/Winapi 2020. 6. 1. 12:09
* 싱글톤 생성 및 필요한 파일과 class 생성. Rend 매니저 Input 매니저 DB 매니저 * 싱글톤 디자인을 생성하는 이유 : 각 class 들의 관리를 용이하게 하기 위해. * 배경 출력을 우선으로 하겠음 ! * 배경 출력을 위해 개별 이미지를 관리하는 ObjectImage class 를 생성하여 Background class 에 선언 후 출력. * 이미지를 개별로 관리므로 배경이 좌우로 움직일 때 이미지만 옮기고 윈도우나 자르는 범위는 바뀌지 않도록 함. * 근데 아직 좌우로 움직이는 것을 못하겠다... 좀 더 생각해보기.
-
WinAPI 더블 버퍼링Code 2020. 5. 16. 23:01
더블버퍼링 (스왑체인) * DC를 2개를 만들어서 바꿔가며 디스플레이 함. * memory DC / Compatible DC 메모리 DC에서 그림을 그리고 콤페터블 DC에서 메모리 DC에서 그린 그림을 복사해서 가져가서 디스플레이 함. hDC = GetDC(hWinMain); hMemDC = CreateCompatibleDC(hdc); hBit => 도화지 = CreateCompatableBitmap(hdc,화면가로,화면세로); * hBit 도 DlelteObject 로 반환해줘야 함. hOldBit => 이전 도화지 저장 = SelectObject 의 반환값을 저장할 것이므로 함수를 만들지 않아도 됨. * Old 를 저장하는 이유 -> 윈도우 운영체제에서 지정한 기본값을 보존시키기 위해. WM_Pain..
-
Framework 만들기카테고리 없음 2020. 5. 15. 22:28
싱글톤 (Design Pattern) - 객체를 n개 이상 만들지 못하게 함. - mpinstance 포인터, if, static 으로 만듦. - 자원을 효율적으로 관리하기 위해 사용하게 됨. (협업을 염두해 둔 상태에서) ex) Rend 매니저를 두개 만들 경우에 자원의 낭비가 크게 일어나 문제가 생길 수 있음. - static 을 사용하기 때문에 전역적 특성을 가지고 있어서 남발하면 안 됨. 메인 프레임 (Mainfrm) Create() - 매니저의 생성 Initialize() - 매니저 등의 슈퍼클래스 초기화 Run() - 실행 Destroy() - 지원 반환 (매니저 / 슈퍼클래스) --> Create 1. winmain 에서 Mianfrm 생성 2. Mainfrm 에서 Mgr 들 생성 (DB,R..
-
Singleton 패턴 만들기카테고리 없음 2020. 5. 14. 22:54
* Manager 에서 vector 를 배열로 관리하는 이유 - Object 별로 하나씩 vector 를 만듦으로써 Object 종류별로 관리할 수 있도록 함. * static 함수에선 static 이 아닌 모든 변수를 참조할 수 없으므로 Destroy() 는 static 이 아닌 변수로 생성. * Obejct (동적할당) clear 를 vector 별로 해줘야 하기 때문에 n번 for문을 돌면서 clear 함수 실행. * rend 매니저에서 Object (동적배열) 를 claer() 해주고 db 매니저에서 동적배열 된 Object 를 delete 해준다. 그러므로 위와같은 구문 나옴. * 동적할당을 delete 해준 뒤 그 값을 NULL 로 초기화 하여 쓰레기값을 지워줌. * 동적할당 해주고 delet..
-
1학기 C언어 중간과제Code 2020. 5. 5. 17:56
* strcmp() 사용에 문제가 있음. -> 생년 반환 -> 성별 반환 -> 거주지 반환 -> 보니까 char 변수에 아스키코드로 저장되어 strcmp() 할 때 뭔가 잘못되는 것 같은데 이것만 고치면 될 것 같다... 근데 이 부분이 너무 헷갈림. ㅠㅠ -> ctmp 에 2가 담겨있음. (확인) 그러면 당연히 strcmp(&ctemp,"2") == false 에서 걸려야 하는 거 아님????????????? * 출력시, char[] num_front 를 넘어서 char[] num_back 까지 함께 출력해버리는 문제. -> 진짜 이건 왜 이러는지 모르겠는데 읽어오는 데이터 영역 때문인 것 같긴 한데 왜.. 왜..? 왜........... -> 이러한 이유로 안 되었던 모양. -> 그래서 이렇게 바꿈...