어떤 이론이나 기술을 습득하려면 먼저 그 대상이 되는 이론이나 기술의 역사적인 변천 과정에 대한 이해가 전제되어야 한다.
왜냐하면 어떤 과정을 통해 형성된 학문인가를 알아야만 공부의 순서를 스스로 설정할 수 있으며 그 학문의 전반적인 이해를
할 수 있기 때문이다. 그래서 이 책은 윈도우즈 발전과정을 살펴보는 것으로 시작한다.


윈도우즈는 미국의 마이크로소프트(Microsoft)사에서 만들었으며 83년 11월에 개발을 시작하여 그 2년 후인 85년 11월에 첫 버전을 발표 하였다.
윈도우즈 이전에 시장을 장악하고 있던 MS-DOS에 비해 멀티 태스킹이 가능했으며 훨씬 더 사용하기 쉽고 예쁜모양의 그래픽 기반 운영체제(GUI)였다. 물론 항상 그렇지만 첫 버전의 기능이나 외형은 보잘 것 없었고 세상 사람들의 주목을 받지도 못하였다.

87년 윈도우즈 1.1이 발표되고 곧이어 87년 11월에 원도우즈 2.0이 발표되었다. 2.0버전의 가장 큰 특징으로는 작업 윈도우끼리 화면을 공평하게 나누어 사용하는 방식(Tiled)을 탈피하여 윈도우끼리 켭칠 수 있도록(Overlapped)했다는 점이다.
그러나 이때까지도 윈도우즈는 그다지 큰 인기를 얻지 못했으며 여전히 도스가 우세했다. 2.0버전까지는 오로지 인텔의 8086/8088 CPU에서만 실행되었으며 386에서도 마이크로 프로세서의 보호 모드를 활요하지 못했다. 그래서 특별히 386의 보호모드를 사용할 수 있는 윈도우즈/386이라는 제품을 발표했으나 이 제품은 곧이어 발표된 윈도우즈 3.0에 의해 가려지게 되었다.

진정으로 윈도우즈가 세상에 알려지기 시작한 때는 1990년 3월 22일에 발표된 윈도우즈 3.0이후이며 그 2년 후인 92년에 3.1로 업그레이드되면서 그야말로 윈도우즈는 전성 시대를 맞이하게 된다. 3.1버전에 이르러서 윈도우즈는 보호모드를 지원하고 메모리를 16M까지 사용할 수 있게 되었으며 쉘, 인터페이스 등에 대대적이 혁신이 있었다.


또한 크기 변경이 자유로운 트루 타입 폰트, 공통 대화상자, 복합 문서를 쉽게 만들도록 해 주는 OLE,  멀티 미디어 등의 새로운 혁신적인 기술들이 많이 소개되었다. 우리가 윈도우즈를 접한 것은 거의 대부분 윈도우즈3.1부터이며 그 이전 버전에 대해서는 극히 소수의 사람만 구경해 보았을 뿐이다. 여기서는 논하는 윈도우즈 프로그래밍 윈도우즈 3.1이상의 버전에 대해서만 국한시키기로 한다. 그 이전 버전에 대해서는 알 필요도 없고 알아야봐야 득이 될 것도 없다. 윈도우즈3.1은 세인들의 깊은 관심속에서 새로운 운영체제로서 상당히 장수를 누렸으며 완전히 한글화된 한글 윈도우즈도 발표되었다.


그러다가 95년 8월 윈도우즈 3.1의 다음 버전인 윈도우즈 95가 발표되면서 윈도우즈는 PC시장의 대부분을 차지하게 되면서 PC환경을 한단계 높이게 되었다. 윈도우즈 95에서 현재의 인터페이스를 거의 확정하였으며 이 인터페이스는 최신의 NT5.0까지 그대로 유지되고 있다. 이 블로그의 주제인 Win32 API 함수들도 대부분 윈도우즈 95버전에서 확정된 것들이다. 윈도우즈 95발표 3년 후에 약간의 기능을 더 추가한 윈도우즈 98이 발표되었으며 이 버전이 현재 가장 많이 사용되고 있다.


한편 마이크로소프트는 클라이언트용의 윈도우즈 9x 시리즈와는 다른 목적으로 윈도우즈 NT를 93년 이후 꾸준히 개발해 왔다. NT는 처음부터 32비트로 설계되었으며 IBM-PC외의 다른 시스템으로도 이식할 수 있도록 디잔인하였다. 윈도우즈 9x는 주로 클라이언트용의 운영체제로 활용되었으며 NT는 고도의 보안성과 안정성이 요구되는 서버용의 운영체제로 개발되었다. 
NT는 4.0버전에 와서 인터페이스가 윈도우즈 95와 똑같은 모습을 가지게 되었으며 5.0버전에서 대폭적인 기능 향상이 있었다.


우리가 윈도우즈의 버전에 대해 먼저 알아야 하는 이유는 버전에 따라 개발 방법에 약간의 차이가 있기 때문이다.
여기서는 주로 최신의 윈도우즈 NT 5.0을 기준으로 API함수들을 설명하되 대부분의 이론이나 예제는 특별한 언급이 없는 한 윈도우즈 98에도 그대로 적용할 수 있다. 또 특별히 이론의 변천과정을 역사적으로 설명해야 할 필요가 있거나 중요하다고 생각되는 부분에서 윈도우즈 3.1에 대해서도 언급한다.

Posted by RoaZium