[API]강좌(1)<--윈도우즈 프로그램의 개요 |
|
컴파일러는 비주얼씨 4.1을 기준으로 하고 방식은 API입니다.
MFC를 익히려는 분들이 많은데 API를 익히고 익히면 더 쉽거든요.
1. 윈도우즈 프로그램의 개요
윈도우즈 프로그래밍을 배울려고 하는 여러분들은 적어도 한가지 책은 가지고 있을 겁니다. 물론 프로그래밍에 관한 책이겠죠. 공통적으로 제일 앞 부분에 보면 윈도우즈 프로그래밍에 관한 개요가 전부 있을 겁니다.
그런 책에 너무 잘 설명되어 있기 때문에 자세히는 언급하지 않겠습니다.
사실 자세히는 잘 모름[혼자말]
윈도우즈는 도스와는 달리 특수한 방법으로 모든게 처리가 됩니다. 왜 도스와는 다른 방법으로 처리가 될까요? 바로 멀티 태스킹이 가능하기 때문입니다. 도스에 있는 인터럽트라는 개념이 윈도우즈에서는 사실상 없습니다.
전부 메시지라고 하는 특수한 것에 의해서 처리가 되죠. 따라서 프로그램을 작성할때도 이 메시지를 가지고 작업하는 것입니다.
1.1 첫번째 알아야 할 사실
프로그램을 예를들어 봅시다. 이 프로그램은 작업영역에 마우스가 클릭되면 마우스가 클릭되었다고 출력합니다. 어떤식으로 프로그램이 작성되어 있을까요?
간단합니다. 마우스가 클릭되면 윈도우즈는 마우스가 클릭되었다는 메시지를 메시지 큐라는 곳에 보냅니다. 프로그램은 어떤 기능을 하면 될까요? 이 메시지 큐에서 메시지를 가져오는 루틴이 있으면 되겠죠? 그래서 그 메시지가 마우스가
눌렸다는 메시지이면 눌렸다고 표시해 주면 되는 것입니다. 아주 간단하죠.
한가지 배웠습니다. 바로 프로그램에는 항상 메시지 큐에서 메시지를 가져오는 루틴이 있어야 한다는 것입니다. 물론 루프문으로 매번 메시지 큐를 체크해야 겠죠.
1.2 두번째 알아야 할 사실
자 그러면 두번째를 배워봅시다. 이런 경우는 어떻겠습니까? 위와 같은 프로그램 이 데스크탑 위에 구동되어 있고 이것과 아주 똑같은 기능을 가진 다른 프로그램 이 하나 더 구동되어 있는 상태에서 한쪽 프로그램에 마우스를 클릭하면 클릭된
프로그램에서 마우스가 클릭되었다고 출력하겠죠. 클릭안된 프로그램에서는 출력이 되지 않을 겁니다. 당연하죠. 이 두 프로그램을 윈도우즈는 어떻게 구분할까요?
아주 간단합니다. 프로그램(윈도우)이 생성될때 윈도우즈는 그 프로그램(윈도우)에 일종의 번호를 부여합니다. 그래서 각 프로그램(윈도우)을 구분하죠. 이 번호를 윈도우즈 용어로 핸들이라고 합니다. 이제 한가지 더 알아야 할것이 바로
이 핸들인데 윈도우즈에서 사용되는 모든 API함수들은 이 핸들을 아구먼트로 요구한다는 것입니다. 이제 하나씩 배워 나가면 그것을 확인하게 될 것입니다.
1.3 윈도우즈 프로그램의 구조
도스에서 프로그램을 짜면 항상 메인함수가 있어야 합니다.
void main(void)
{
}
위와 같은 형태로 프로그램을 작성했을 겁니다. 그런데 윈도우즈에서는 위 메인 함수를 사용하지 않고 WinMain()이라는 윈도우즈 메인함수를 사용해서 프로그램을 작성합니다.
도스에서 메인 함수가 필수듯이 윈도우즈에서도 윈 메인함수는 필수입니다. 여기서 한 가지 더 알아야 할 사실은 도스에서는 메인 함수 하나만 있으면 됐지만 윈도우즈에서는 함수가 하나 더 필수적으로 있어야 한다는 것입니다. 보통 이 함수를 그냥 윈도우 함수라고 합니다.
그러면 어떤식으로 되는지 전체적으로 흐름을 알아봅시다.
먼저 윈 메인 함수에서는 윈도우를 생성하고 메시지 큐에서 메시지를 가져오는 역할을 합니다. 그래서 가져온 메시지를 윈도우 함수로 보내는데 실제로 메시지를 보고 판단하여 해당 작업을 수행하는 부분이 바로 윈도우 함수가 되는거죠.
왜 윈도우 함수가 필요한지 알겠죠?
또 윈 메인함수도 내부적으로 크게 세부분으로 나눌수 있습니다.
WinMain()
{
첫번째 파트
두번째 파트
세번째 파트
}
첫번째 파트에서 프로그래머가 해주어야 할일은 생성할 윈도우의 속성을 지정해주는 것입니다. 뭐 바탕색은 어떤 색깔로 하고 메시지를 받아서 처리할 윈도우 함수 이름도 지정해 주어야 하고 커서, 아이콘등도 지정해 주는 작업을 여기서 하죠.
두번째 파트에서는 실제로 윈도우를 생성해서 화면에 보이게하는 작업이고 마지막 세번째 파트에서는 메시지 큐에서 메시지를 꺼내서 윈도우함수에 보내주는 작업을 해주면 됩니다.
자 이제 이해가 갑니까? 이해가 가면 벌써 절반은 끝난거나 다름없습니다. 쉽죠.
다음 시간에는 실제로 윈도우를 생성하는 프로그램을 만들어 보겠습니다.
출처 : http://www.hanpoi.wo.to/