타일랜드.gif

헝그리배너.gif

광고베너.gif



♨신규 홍보♨



  1. 얍얍 233,796
  2. 도리toS 204,379
  3. 타이갓 203,273
  4. 투혼v 169,510
  5. 스쿼드 120,791
  6. 깡따구 119,760
  7. 별사탕 103,073
  8. 두현베어스 84,387
  9. ZicP 81,743
  10. 농민2 78,010
  11. 뮤짱 70,971
  12. 키호 67,705
  13. 코난 67,591
  14. 머니 65,768
  15. 치즈돈가스덮밥 64,876
  16. 환장하겠네 62,241
  17. 나로네 52,909
  18. 묻었다 49,892
  19. 마티쿄 48,571
  20. 우리집또털어 48,106
  21. RoseM 45,738
  22. 안인시우안 42,790
  23. 퐝비홍 41,678
  24. 뚜루룽이 41,520
  25. godwk 40,877
  26. 보노보noo 40,426
  27. 김감김 39,847
  28. Baron 39,775
  29. 헬스보이 37,655
  30. 헉헉로 37,079

huuon2.gif


♨신규 게시물♨



광고베너.gif


♨신규 댓글♨


00. 크레이지 아케이드 만들기 (Win API 소개)

sacyz1n2019.08.10 09:00조회 수 347추천 수 2댓글 6

  • 1
    • 글자 크기

안녕하세요. 

 

뭐 별건 없고 크레이지 아케이드를 모작해보자! 입니다.

 

Win API + DirectX9 을 이용해서 만들어 봅시다.

 

이 강의는 C, C++, STL을 어느정도 아시는분이 보시는게 적절하다고 생각합니다.

 

먼저 Win Api를 만들어봅시다.

 

1. Microsoft Visual Studio 를 켜줍니다.

 

2. 좌측 상단에 파일 클릭 ->  새로만들기(N) -> 프로젝트(P) 를 눌러줍시다.

 

3. 그러면 아래와 같은 창이 나타납니다.

 

4. 이름은 Client, 솔루션 이름은 Framework 라고 지은 후 확인을 눌러줍니다.

 

1.PNG

 

 

5.  그냥 마침을 눌러줍시다.

 

 

2.PNG

 

6. Win API는 변수 자료형앞에 H가 붙은 자료형은 핸들(Handle) 이라고 합니다.

 

핸들은 단순 정수로 이루어져있습니다. 이  정수값은 운영체제에서 부여해주므로 저희는 이 정수값이 무엇인지 알 필요는 없습니다.

 

그리고 핸들은 비유하자면 주민등록번호와 같습니다.  즉, 나의  주민등록번호는 세상에 단 하나만 존재하듯이 핸들값 또한 단 하나만 존재해야합니다.

 

다시 말하자면 핸들값은 겹치지 않습니다. ( 겹치지 않게 운영체제가 잘 부여해줍니다.)

 

7. 그럼 밑에 처럼 HWND g_hWnd를 추가해줍시다. 이 핸들은 WND 즉 Window 핸들입니다.

 

자주 사용되므로 전역 변수를 가지도록 하겠습니다.

 

 

4.PNG

 

 

8.  윈도우의 생성 과정은 아래와 같습니다.

 

    1. 윈도우 클래스를 메모리 상에 등록한다.    

    2. 메모리상에 등록된 윈도우 클래스대로 윈도우를 생성합니다.

    3. 생성된 윈도우를 출력합니다.

 

9. MyRegisterClass는 윈도우 클래스를 등록하는 과정입니다.

  

   1. WNDCLASSEXW라는 구조체는 윈도우에 대한 특성을 담는 구조체입니다.

   2. 이 구조체로 선언한 변수에 대하여 윈도우의 특성을 정의해주고 있습니다.

   3. 마지막으로 RegisterClassExw 라는 함수는 위에서 정의한 윈도우 클래스 변수를 메모리 상에 등록시켜주는 함수입니다.

    

 

3.PNG

 

10. 메모리 상에 등록된 윈도우 클래스 대로 윈도우를 생성 후 출력해줍니다.

 

    1. g_hInst = hInstance 부분에서 프로그램 핸들을 전역변수에 저장해주고 있습니다.

    2. CreateWindowW 함수를 통하여 메모리상에 등록된 윈도우 클래스대로 윈도우를 생성해줍니다.

    3. ShowWindow 함수를 통하여 생성된 윈도우를 출력해줍니다.

 

 

5.PNG

 

11. 여긴 메시지 루프입니다. 윈도우가 생성되어 출력된 후에 들어오는 곳입니다.

   

      모든 이벤트는 메시지가 발생합니다.

      즉, 마우스를 클릭하거나 키보드를 입력하거나 마우스 휠을 움직이거나 등등 이벤트가 발생하면

     운영체제에서 메시지를 발생시킵니다. 

     발생한 메시지는 메시지큐라는 버퍼에 들어가 하나씩 하나씩 꺼내서 읽어줍니다.

 

    그리고 저희는 꺼낸 이 메시지를 가지고 상황에 알맞게 처리해줘야합니다.

 

   여기서 GetMessage라는 함수는 메시지큐에서 메시지를 꺼내주는 역활을 합니다.

    만약 메시지큐에 메시지가 없을 경우 데드락(DeadLock) 상태에 빠집니다. 즉, 메시지가 들어올 때 까지 주구장창 대기합니다.

   그리고 이 함수는 WM_QUIT 메시지를 받을 경우 FALSE를 반환합니다. ==> 루프를 탈출하게 됩니다. ==> 프로그램 종료

 

  TranslateAcccelerator는 단축키를 눌렀냐 판별하는건데 게임을 만드는데 사용하지 않기때문에 넘어갑니다.

 

  TranslatetMessage : 메시지를 해석합니다.  즉, 키보드를 눌렀는데 어떤 키를 눌렀냐 이런걸 해석합니다.

 

   DispatchMessage : 해당 메시지를 윈도우클래스에서 설정한 윈도우 프로시저 함수로 보냅니다.

                                                  ==> 윈도우 프로시저 함수에서 메시지를 상황에 맞게 처리해줍니다.

 

6.PNG

 

 다시 정리 해보자면

 

   1. 윈도우 클래스를 메모리 상에 등록합니다. 

   2. 메모리 상에 등록된 윈도우 클래스대로 윈도우를 생성합니다. (CreateWindowW)

   3. 생성한 윈도우를 출력합니다. (ShowWindow)

   4. 이후 메시지 루프에서 계속 메시지를 처리합니다.

 

추천해주신 분들

  • 1
    • 글자 크기
01. 크레이지 아케이드 만들기 (윈도우 창 보정,) (by sacyz1n) 파이썬을 이용한 간단한 메이플스토리 만들기(5/20) - 회원가입 및 로그인 기능 수정 및 다음 화면 만들기 (by 지금몇시지)

댓글 달기

댓글 6
번호 제목 글쓴이 조회 수
48 [PHP] 간단한 디스코드 Push 시스템 완전 최소로 구현하기 (매우 간단)2 MJ 108
47 USBWebserver v8.6.2 가장 가벼운 포터블 웹서버4 jhon 152
46 Code 수정 유틸 ollydbg 사용법1 뿌르뿌르 141
45 메이플 모작 진행상황 (툴)8 sacyz1n 563
44 브릿지 패턴 (Bridge Pattern)5 sacyz1n 132
43 디스코드 봇 만들기 [Create Discord Bot] - 12 토끼린 717
42 파이썬을 이용한 간단한 메이플스토리 만들기(6/20) - 로그인 기능 수정및 다음화면 이미지 넣기6 지금몇시지 574
41 03. 크레이지 아케이드 만들기 (타이머 매니저, 싱글톤 패턴)4 sacyz1n 377
40 02. 크레이지 아케이드 만들기 (PeekMessage, 게임 구조)3 sacyz1n 195
39 01. 크레이지 아케이드 만들기 (윈도우 창 보정,)3 sacyz1n 164
00. 크레이지 아케이드 만들기 (Win API 소개)6 sacyz1n 347
37 파이썬을 이용한 간단한 메이플스토리 만들기(5/20) - 회원가입 및 로그인 기능 수정 및 다음 화면 만들기2 지금몇시지 322
36 파이썬을 이용한 간단한 메이플스토리 만들기 공지(포토샵 디자이너 모집)2 지금몇시지 198
35 ★ 비주얼 베이직6.0 노설치버전은 여기서 ★3 초코슬램 93
34 파이썬을 이용한 간단한 메이플스토리 만들기(4/20) - 회원가입 및 로그인 기능 만들기6 지금몇시지 342
33 파이썬을 이용한 간단한 메이플스토리 만들기(3/20) - 로그인 화면 만들기3 지금몇시지 439
32 포토샵 웹용으로 저장 save for web 비활성화 되어있는경우 활성화시키기 (포토샵 포터블 오류) 관리자 905
31 파이썬을 이용한 간단한 메이플스토리 만들기(2/20) - IDE(통합개발환경)설치편2 지금몇시지 204
30 파이썬을 이용한 간단한 메이플스토리 만들기(1/20) - 설치편4 지금몇시지 433
29 자바의 기초 1 데이터타입 asdtlkh 96
첨부 (1)
Framework.zip
12.58MB / Download 0
">

서버에 요청 중입니다. 잠시만 기다려 주십시오...