본문 바로가기

윈도우를 만들기 원문 http://wisdom.sakura.ne.jp/system/winapi/win32/win7.html 준비된 윈도우그럼, 슬슬 윈도우 작성에 들어가고 싶다고 생각합니다.이게 끝나지 않으면, 그래피컬한 프로그래밍의 설명에 들어갈 수 없습니다. Windows 프로그래밍에서는, 윈도우의 생성을 두개의 작업으로 나뉩니다.하나는 윈도우 클래스의 등록입니다.비교적 범용적인 설정을 하고, 이것을 등록해 돌려쓰는 것이 가능합니다. 또 하나는, 직접적인 윈도우의 생성작업 입니다.등록된 윈도우 클래스를 기반으로, 윈도우를 생성합니다. 일단 이 부분에서는, 그 둘 중 후자의 윈도우 생성작업을 설명합니다.이 작업에는 윈도우 클래스가 필요합니다만,미리 준비되어있는 윈도우 클래스가 몇가지 있으므로, 그것을 이용합시다. 윈도.. 더보기
2.4.1 WM_CHAR 메세지 2.4.1 WM_CHAR 메세지 Windows가 키의 누름에 연동해서 송신하는 메세지는 어느정도 있습니다.문자를 읽어들이는 것에는 WM_CHAR 메세지를 사용합니다WM_CHAR 메세지는 유저가 키보드에 문자를 1개 타이핑 한 것을 게임에 송신됩니다.타이핑된 문자를 읽어들이기 위해 필요한 것은, WM_CHAR 메세지의 핸들러를 WinProc 함수에 추가하는 것입니다.(#코드 2.11) #코드 2.11 WM_CHAR 메세지의 핸들러 case WM_CHAR:// 키보드에서 문자가 입력 된 경우 switch(wParam){// 문자는 wParam에 저장되어 있음 case 0x08:// 백 스페이스 case 0x09:// 탭 case 0x0A:// LF(Line Feed) case 0x0D:// CR(Carria.. 더보기
2.4 Windows API에 대한 키보드 입력 2.4 Windows API에 대한 키보드 입력 게임에서는 일반적으로, 2종류의 키보드 입력이 사용되고 잇씁니다.어느쪽을 일반적으로 사용하거나, 둘 다 사용하거나는, 게임에 대해서 다릅니다.첫번째 입력은 텍스트입니다.다시 말해, 유저가 키보드로 문자를 타이핑할 때의 경우입니다.이 경우는 어떤 문자가 어떤 순서로 눌려지는가를 인식할 필요가 있습니다.예를들어 유저가 「north」라고 하는 단어를 타이핑하려고 할 것을 인식합니다.또 한개의 입력은 키보드를 게임 컨트롤러로써 사용할 경우입니다.이 경우는 키가 현재 눌려 있는가 어떤가를 인식할 필요가 있습니다.유저가 현재 「w」키와 우방향 키를 누르고 있는 것을 인식합니다. 서장으로 더보기
2.3 디바이스 콘텍스트 2.3 디바이스 콘텍스트 Windows는 다양한 종류의 디스플레이 또는 출력 디바이스를 조작할 수 있도록 설계되어 있어, 디바이스 비의존성(非依存性)이 확립되어 있습니다.이 때문에, 어플리케이션은 여러가지의 출력 디바이스에 동일의 조작으로 액세스 할 수 있습니다.이 디바이스 비의존성의 중심이 되고 있는 것이, 그래픽 디바이스 인터페이스(GDI)입니다.다이나믹 링크 라이브러리의 한가지로써 GDI는 디바이스 드라이버와 같이, 어플리케이션이 프린트 또는 VGA 디스플레이에 그리는 것을 가능케 합니다. 특정의 디바이스에 액세스 할 경우, 어플리케이션은 GDI에 대해서, 적절한 디바이스 드라이버를 읽어들여 묘화 처리용에 디바이스를 준비하도록 통지(通知)합니다.이 통지는 디바이스 콘텍스트(DC)를 작성하는 것에 대.. 더보기
2.2.6 WinProc 함수 2.2.6 WinProc 함수 마지막으로 중요한 WinProc 함수를 설명합니다.이것은 메세지를 처리하기 위해 사용되는 함수입니다.「WinProc」는 이 함수에 붙여진 일반적인 이름입니다.이 함수의 이름은 전술(前述)의 윈도우 클래스를 작성하는 함수로 WNDCLASSEX 구조체에 지정된 이름과 일치할 필요가 있습니다. 프로그램에는 다양한 종류의 메세지가 송신되고 있습니다.프로그램이 응답할 메세지에 대해서는 WinProc에 필요한 코드를 기술합니다.프로그램이 무시한 메세지는 전부 Windows에 대해서 처리됩니다. #코드 2.9가 응답하고 있는 메세지는, WM_DESTROY 밖에 없습니다.WM_DESTROY는 윈도우가 화면에서 삭제되어, 그 후 파기될 때에 Windows에서 송신됩니다.WM_DESTROY .. 더보기
2.2.5 메세지 루프 2.2.5 메세지 루프 윈도우는 메세지를 송신하는 것에 대해서 프로그램과 교환을 합니다.이 메세지를 사용해, 마우스의 이동이나 키의 눌림 같은, 유저에서의 조작이 전해집니다.또 메세지는 Windows에서의 커맨드라고 하는 경우도 있습니다.WinMain 내의 루프를 사용해 메세지가 있는가를 체크합니다.(코드 2.8)어플리케이션이 유저에서의 문자입력을 받을 경우는, 이 메세지 루프내에 TranslateMessage 함수를 호출할 필요가 있습니다.TranslateMessage는 가상 키 메세지를 문자 메세지로 변환하는 Windows 함수입니다.메세지는 DispatchMessage 함수에 대해 WinProc 함수로 보내고, 처리됩니다.WinMain은 WM_QUIT 메세지가 수신될 때 까지 이 루프를 계속합니다... 더보기