godurum/일반
윈도우 분석 1. 윈도우란
민성아빠
2004. 4. 24. 18:08
####################################################
윈도우 분석
1. 윈도우란
1) 메세지기반(Message) 프로그램
2) 메세지큐
3) API를 이용한 윈도우프로그래밍
####################################################
1. 윈도우란
윈도우 분석 첫번째 시간입니다. 언어는 VC++를 사용합니다. MFC는 무겁기때문에 나중에 다루도록
하겠습니다.
일반적으로 VC++ 서적을 보시면 첫 부분에 윈도우에 대해 다루고있습니다. 그러나
설명이 부족한 부분도 있고, 너무 많아 전체적인 그림을 이해하기가 힘들때가 많져, 일단 제가
이해하구 있는 윈도우의 그림을 보여드리도록 하겠습니다. 이곳에서 자세한 설명까지 올리지는
않겠습니다. 설명이 부족한 부분은 책으로 충분히 찾아보실수 있을 겁니다. 아래 내용은
IT Education Center의 무료 강의 자료를 정리한 것입니다.
1) 메세지기반(Message) 프로그램
윈도우 어플리케이션은 OS와 어떤 특별한 상호작용을 통해 동작한다. 이러한 상호작용은 운영체제와
어플리케이션사이에 메세지라는 형식의 데이타를 주고 받음으로써 이루어진다
윈도우 어플리케이션은 OS가 보내는 메세지에 따라서 동작한다. 어플리케이션은 메세지를 통해서
OS로부터 명령이나 정보를 받아 메세제에 해당하는 적절한 행동을 수행함으로써 프로그램이 동작한다
즉, 어플리케이션이 하나의 윈도우를 만들겠다고 OS에 알리면 OS는 윈도우를 하나 만들라는 메세지를
어플리케이션이 보내고, 이 메세지를 받은 어플리케이션이 메세지를 처리함으로써 하나의 윈도우를
만든다.
사용자가 마우스로 윈도우를 클릭하면 OS는 어플리케이션에 마우스가 눌렸다는 메세지를 보내고 ,
키보드를 눌리면 어던 키보드가 눌렀는지에 대한 정보와 함께 키보드가 눌렀다는 메세지를 보낸다.
그래서 윈도우 어플리케이션을 작성한다는 것은 운영체제가 보내는 다양한 메세지를 어떻게
처리하는가에 대한 것이다
이말의 뜻은 정확히 무엇을 의미하는 것일까? 운영체제가 어플리케이션에 메세지를 보낸다는 것은
어플리케이션이 제공하는 하나의 함수를 호출한다는 것을 의미한다 이 함수를 윈도우프로시저라고
한다.
모든 윈도우는 하나의 윈도우 프로시저를 갖는다. 우리가 흔히 보는 버튼 컨트롤의 동작을 예를들어
보자. 버튼위에서 마우스를 누르면 버튼이 눌러진다 어떻게 버튼이 눌려지는 것일까? 모든 윈도우는
윈도우 프로시저를 가지고 있다 버튼에도 버튼윈도우에 해당하는 윈도우 프로시저가 있다
ㄱ) 마우스 왼쪽버튼을 누르면
ㄴ) 운영체제가 마우스가 눌린 버튼의 윈도우프로시저에게
마우스의 왼쪽 버튼이 눌렸다고 알린다
ㄷ) 버튼의 윈도우 프로시저는 이 메세지를 받고 버튼이
눌리는것처럼 버튼의 모양을 그린다 그럼으로써 버튼이 눌려지는것 처럼 보인다
그러면 화면에 떠있는 여러개의 윈도우중에서 어떻게 운영체제가 마우스를 누른 버튼윈도우의
프로시저를 호출할까? 메세지 큐 때문에 가능하다
2) 메세지큐
메세지큐에는 두종류가 있다. 운영체제가 관리하는 시스템메세지큐와 실행중인 각 프로그램마다
하나씩 가지고 있는 스레드메세지큐가 있다. 시스템메세지큐에는 발생되는 모든 이벤트가 메세지
형태로 큐에 쌓인다. 이때 운영체제는 시스템메세지큐에서 메세지를 하나씩 꺼내어 메세지가 발생한
윈도우가 가지고 있는 스레드메세지큐에 전달한다.
3) API를 이용한 윈도우프로그래밍
API(Application Programming Interface)란 프로그래밍을 위해 제공되는 함수들을 가리키는
말로 윈도우 프로그래밍을 위한 API를 Win32API라고 한다
API는 C 타입의 함수들의 집합이다 윈도우 프로그래밍을 위한 API는 약 10,000 개정도 알려져 있다
윈도우 분석
1. 윈도우란
1) 메세지기반(Message) 프로그램
2) 메세지큐
3) API를 이용한 윈도우프로그래밍
####################################################
1. 윈도우란
윈도우 분석 첫번째 시간입니다. 언어는 VC++를 사용합니다. MFC는 무겁기때문에 나중에 다루도록
하겠습니다.
일반적으로 VC++ 서적을 보시면 첫 부분에 윈도우에 대해 다루고있습니다. 그러나
설명이 부족한 부분도 있고, 너무 많아 전체적인 그림을 이해하기가 힘들때가 많져, 일단 제가
이해하구 있는 윈도우의 그림을 보여드리도록 하겠습니다. 이곳에서 자세한 설명까지 올리지는
않겠습니다. 설명이 부족한 부분은 책으로 충분히 찾아보실수 있을 겁니다. 아래 내용은
IT Education Center의 무료 강의 자료를 정리한 것입니다.
1) 메세지기반(Message) 프로그램
윈도우 어플리케이션은 OS와 어떤 특별한 상호작용을 통해 동작한다. 이러한 상호작용은 운영체제와
어플리케이션사이에 메세지라는 형식의 데이타를 주고 받음으로써 이루어진다
윈도우 어플리케이션은 OS가 보내는 메세지에 따라서 동작한다. 어플리케이션은 메세지를 통해서
OS로부터 명령이나 정보를 받아 메세제에 해당하는 적절한 행동을 수행함으로써 프로그램이 동작한다
즉, 어플리케이션이 하나의 윈도우를 만들겠다고 OS에 알리면 OS는 윈도우를 하나 만들라는 메세지를
어플리케이션이 보내고, 이 메세지를 받은 어플리케이션이 메세지를 처리함으로써 하나의 윈도우를
만든다.
사용자가 마우스로 윈도우를 클릭하면 OS는 어플리케이션에 마우스가 눌렸다는 메세지를 보내고 ,
키보드를 눌리면 어던 키보드가 눌렀는지에 대한 정보와 함께 키보드가 눌렀다는 메세지를 보낸다.
그래서 윈도우 어플리케이션을 작성한다는 것은 운영체제가 보내는 다양한 메세지를 어떻게
처리하는가에 대한 것이다
이말의 뜻은 정확히 무엇을 의미하는 것일까? 운영체제가 어플리케이션에 메세지를 보낸다는 것은
어플리케이션이 제공하는 하나의 함수를 호출한다는 것을 의미한다 이 함수를 윈도우프로시저라고
한다.
모든 윈도우는 하나의 윈도우 프로시저를 갖는다. 우리가 흔히 보는 버튼 컨트롤의 동작을 예를들어
보자. 버튼위에서 마우스를 누르면 버튼이 눌러진다 어떻게 버튼이 눌려지는 것일까? 모든 윈도우는
윈도우 프로시저를 가지고 있다 버튼에도 버튼윈도우에 해당하는 윈도우 프로시저가 있다
ㄱ) 마우스 왼쪽버튼을 누르면
ㄴ) 운영체제가 마우스가 눌린 버튼의 윈도우프로시저에게
마우스의 왼쪽 버튼이 눌렸다고 알린다
ㄷ) 버튼의 윈도우 프로시저는 이 메세지를 받고 버튼이
눌리는것처럼 버튼의 모양을 그린다 그럼으로써 버튼이 눌려지는것 처럼 보인다
그러면 화면에 떠있는 여러개의 윈도우중에서 어떻게 운영체제가 마우스를 누른 버튼윈도우의
프로시저를 호출할까? 메세지 큐 때문에 가능하다
2) 메세지큐
메세지큐에는 두종류가 있다. 운영체제가 관리하는 시스템메세지큐와 실행중인 각 프로그램마다
하나씩 가지고 있는 스레드메세지큐가 있다. 시스템메세지큐에는 발생되는 모든 이벤트가 메세지
형태로 큐에 쌓인다. 이때 운영체제는 시스템메세지큐에서 메세지를 하나씩 꺼내어 메세지가 발생한
윈도우가 가지고 있는 스레드메세지큐에 전달한다.
3) API를 이용한 윈도우프로그래밍
API(Application Programming Interface)란 프로그래밍을 위해 제공되는 함수들을 가리키는
말로 윈도우 프로그래밍을 위한 API를 Win32API라고 한다
API는 C 타입의 함수들의 집합이다 윈도우 프로그래밍을 위한 API는 약 10,000 개정도 알려져 있다