본문 바로가기

デベロップメント/Win32 API

Win32 API라는 것은

원문 http://wisdom.sakura.ne.jp/system/winapi/win32/win1.html


Windows 프로그래밍

여기서는 Microsoft사의 Windows 오퍼레이팅 시스템의 프로그램을 해설합니다.

Windows 프로그래밍을 하기 위해서는 Windows가 제공하는 API를 조작합니다.

API라는 것은 Application Programming Interfaces라는 것으로

어플리케이션으로부터 OS를 조작하기 위한 수단입니다
(이것은 개발자가 제공하고 있습니다)


네이티브한 Windows API를 조작하는 것은,
Windows 프로그래밍 및 Windows라고 하는 OS의 구조를 이해하는 것이 매우 중요합니다.

하지만, 동시에 곤란하게 이해하기 어려운 부분도 많아 나름의 프로그래밍 경험을 필요로 합니다.


Windows API를 배우는데에는, 많은 기초지식을 필요로 합니다

이 강좌를 열람하는데에는, 적어도 C언어의 지식이 필요합니다.

또, Windows 오퍼레이팅 시스템(9x계열, NT계열 중 하나)을 숙지하고 있는 것으로 합니다.

제3에 문자코드나 컴퓨터 아키텍쳐도 자세히 하지 않으면 안됩니다.

Unicode나 CISC, RISC라고 하는 말을 듣고 이해하지 못하면

일단은 정보기술에 대한 기초지식을 익히셨으면 합니다.


Windows 프로그래밍의 방법

이 강좌에서는, Microsoft Visual C++ 6.0과 같은 개발환경을 따릅니다.

C언어에서 API를 불러내는 일반적인 Windows 프로그래밍 방법을 사용합니다.


몇번이나 말합니다만, 이를 위해서는 C언어같은 기초지식을 필요로 합니다.

하지만, Windows 프로그래밍의 수단은 이것만 있는 것이 아닙니다.

Microsoft Visual Basic이나 Boland Delphi같은 수단도 있습니다.

Sun Microsystems사의 Java라고 하는 수단도 있습니다.

Microsoft Visual C++이 있으면, MFC라고 하는 클래스군(郡)도 지원되고 있습니다.


상기(上記)한 방법은 네이티브 API를 직접 조작하는 것보다 훨씬 쉽게 습득할 수 있습니다.

개발효율이나 관리를 중시하고 싶다면, 오히려 이쪽이 더 뛰어난 방법이겠죠.

다만, 이러한 방법에서 API의 지식이 있다면, 더욱 고도의 프로그램을 만들 수 있겠죠.

무엇보다, API를 직접 조작하는 방법은, 더욱 더 OS의 기능을 끌어내는 것이 가능합니다.



Windows의 역사

안타깝게도 Windows의 역사를 세세하게 적으면 그것만으로도 1권의 책이 됩니다.

빌 게이츠씨나 애플의 잡스씨, 그들과 팰로앨토 연구소앨토와의 만남

현대 컴퓨터의 역사는, 가히 드라마라고 말하는 이면(裏舞台)이 있었습니다.

그것을 여기에 표기하는 것은, 문장력(그리고 지식이・・・)이 없는 필자에게는 무리의 이야기 입니다.

여기서는, Windows 프로그래밍을 하기 위해 필요한 단순한 역사를 따르기로 합시다.


연대

메이커

플랫폼

해설

1983

 Apple Computer

Lisa

 Mac의 전신(全身)

1983

 Microsoft

Windows 발표

 릴리즈는 이로부터 2년 후

1984

 Apple Computer

Macintosh

 GUI 표준의 확립

1985

 Microsoft

Windows Version 1.0

 Windows의 초판

1987

 Microsoft

Windows Version 2.0

 Windows/386
 Windows/286 (Ver2.1) 등
 멀티 태스크, 각 인터페이스의 확장

1987

 IBM/Microsoft

OS/2 Version 1.0

 공동개발된 OS
 GUI의 지원은 없음

1988

 IBM/Microsoft

OS/2 Version 1.1

 PM이라고 불리는 GUI 지원

1990

 Microsoft

Windows Version 3.0

 이 후에 IBM은 OS/2를
 Microsoft는 Windows를 전개(展開)
 OS/2는 일부의 이용자를 확보하면서도
 Windows의 점유율을 따라잡지 못함

1992

 Microsoft

Windows Version 3.1

 멀티 미디어의 지원
 일본에도 여기부터 Windows가 주목 됨
 일본어판 익년(翌年) 릴리즈

1993

 Microsoft

Windows NT

 Server와 Workstation으로 나뉘었음
 Intel Pentium 프로세서 같은 32비트의 지원

1995

 Microsoft

Windows 95

 개인용 최초의 32비트 지원

 일본에도 많은 유저를 확보

1998

 Microsoft

Windows 98

 처리 성능이나 인터넷 기능
 하드웨어 지원 등을 확장

2000

 Microsoft

Windows 2000

 NT의 후계기(後継機)가 됨
 Professional, Server,
 Advanced Server, Datacenter Server 등
 기능으로 각종 버전이 나뉘어 있음

2000

 Microsoft

Windows Me

 Me는, Millennium Edition의 약(略)
 Windows 98의 후계기


Macintosh 등의 개발공정은 생략했습니다만, 이런 느낌입니다.
흥미가 있으면, Macintosh나 OS/2등의 개발사(
開発歴)도 알아보면 좋겠죠

그런데, 문제는 우리들이 이제부터 하려고 하는 Windows 프로그래밍
도대체 어떤 Windows 프로그래밍인 걸까요・・・
안심하세요. 사실 NT계열도 9x 계열도 기본적으로는 호환성이 있습니다
하지만, 각각의 아키텍쳐는 다릅니다
초기 버전은 논 프리엔프티브(
none-preemptive)의 16비트 컴퓨터이었습니다만
특히, 16비트에서 32비트 아키텍쳐로의 이행시(移行時)에는
API에도 큰 변경이 가해지는, 몇가지 과거의 API를 사용하는 것은 권장되지 않습니다.


이 때문에, 16비트 아키텍쳐의 Windows API(Windows 3.1까지)를 Win16이라고 부르고
이제 우리가 하려고 하는, 32비트 Windows의 API를 Win32라고 부릅니다.

Win32의 위치는, Win16의 확장판 같은 느낌입니다.

그것들은 호환성을 유지하면서, Win16에서 실현할 수 없는 명령(함수 호출)이 추가되었습니다.
또, Windows9x와 Windows NT는, 쌍방(
双方) Win32 API를 지원하고 있습니다만
각각, 고유의 기능이 구현되어 있으므로 완전한 호환은 아닙니다.


동적 링크

Windows 프로그래밍의 기본 개념은 동적 링킹입니다.
Windows는, 디스플레이 등에 표시하는 그래픽 함수를 지원하고 있습니다.
어플리케이션은 Windows의 함수를 불러내(함수 호출) 그 기능을 이용합니다.


Windows가 지원하는 함수는 수천개나 있으며, 이 강좌에선 모든 것을 소개할 수 없습니다.

이것들의 함수는 동적 링크 라이브러리(DLL)에 준비되어 있습니다.

확장자는 일반적으로 *.dll이지만 *.exe일 때도 있습니다.


Windows의 함수는 C언어 등의 표준 라이브러리와 다르게
프로그램의 외부에 존재해, 프로그램에서 함수의 엔트리 포인트(Entry Point)에 접속합니다.
DLL의 이름이나 위치는 임포트 라이브러리(Import Library)가 제공하고 있습니다.
프로그래머는 Windows 프로그램을 생성할 때, 우선 이것에 링크하지 않으면 안됩니다.
// 임포트 라이브러리는, 개발 환경이 지원하고 있습니다.


이상 자세한 것은, 실제로 프로그램을 보지 않으면 이해하지 못하겠죠
자, 곤란한게 기다리고 있다고 생각합니다만, 꼭
간이 환경(簡易環境)에 기대지 않고, 서드 파티제(製)의 라이브러리에 기대지 않는다

당신이 직접 만든 최고의 라이브러리로 Windows를 움직이는 것이 가능하게 됩니다.




이전 페이지
 
다음 페이지