본문 바로가기

Windows/_Windows Programming

윈도우즈(Windows) 프로그래밍의 기초

윈도우즈(Windows)의 장점 :

1. 그래픽 기반의 운영체제이다.

2. 멀티 태스킹이 가능하다.

3. 장치에 영향을 받지 않는다.

4. 일관성



개발툴의 선택 :

1. API :

API(Application Programming Interface) : 운영체제가 응용 프로그램을 위해 제공하는 함수의 집합

2. SDK :

SDK(Software Development Kit) : 윈도우즈를 만든 Microsoft에서 제공하는 윈도우즈용 프로그램 개발 킷이다. API 함수들을 사용하여 프로그램을 작성하며 가장 원론적이고 먼저 발표된 개발방법이다. 섬세하고 막강하며 속도가 빠르고 크기에 유리하나 방대한 API 함수를 알아야 하며 코드가 길어지고 생산성도 낮다.

3. 클래스 라이브러리

API 함수들을 좀 더 쉽고 빠르게 사용하기위해 클래스로 잘 포장하여 클래스 위주로 프로그램을 작성하는 방법이다. 클래스가 잘 설계되어 있어 사용하기도 쉬우며 기능 또한 막강하다.
MFC(Microsoft사)가 대표적이다. 다만 클래스 라이브러리의 문법적 기반인 OOP에 대해 상세히 알아야 하며 API 함수를 기반으로 하기 때문에 API 함수에 대한 기본 개념이 있어야 한다.

4. 비주얼 툴

API는 어렵고 생산성이 너무 떨어지고 클래스 라이브러리도 배우기가 쉽지 않다.
API나 OOP를 몰라도 프로그램을 작성할 수 있는 비주얼 툴이 있다.
그림을 그리듯 화면을 디자인 하며 필요한 곳에만 간단한 코드를 작성하는 개발툴이다.



API 를 알아야 하는 이유 :

1. 운영체제를 이해하기 위해

2. 어차피 알아야 하므로

3. 개발툴이 제공하지 않는 것을 구현하기 위해



API 공부하기 전에 :

1. API 를 사용하기 위해서는 윈도우즈의 표준 언어인 C를 컴파일 하는 컴파일러가 있어야 한다.
또한 API는 C언어로 형식으로 되어 있기에 C 프로그래밍에 대해 어느정도 알고 있어야 한다.



2. 사전 지식 :

2-1. 변수 명명법 :

 접두어  원래말   의미
 cb  Count of Bytes  바이트 수
 dw  double word  부호없는 long형 정수
 h  handle  윈도우, 파일 등의 핸들
 sz  Null Terminated   NULL 종료 문자열
 ch  Character  문자형
 a  Array  배열
 w  Word  부호없는 정수형
 i  Integer  정수형
 b  Bool  논리형

변수명을 나타내는 이런 약속 외에도 윈도우즈는 새로운 데이터형을 만들어서 사용한다.
이 데이터 형은 windows.h 라는 헤더파일에 typedef 로 선언되어 있으며 모든 프로그램에서 표준 데이터형처럼 사용한다.

 데이터형  의미 
 BYTE  unsigned char 형
 WORD  unsigned short 형
 DWORD  unsigned long 형
 LONG  long형과 동일
 LPSTR  char* 와 동일
 BOOL  정수형이며 TRUE, FALSE 중 한값을 가진다


2-2. 핸들에 대한 이해 :

핸들(Handle) : 어떤 대상에 붙여진 번호이며 문법적으로는 32비트 정수값이다.
만들어진 윈도우에는 윈도우 핸들(hWnd)를 붙여 윈도우를 번호로 관리하며 거의 모든 것에 다 핸들을 붙여 구분하는데 그 이유는 문자열 보다 정수를 사용하는 것이 훨씬 더 속도가 빠르고 간편하기 때문이다.

핸들의 특징 :

1. 32비트 정수값이다.

2. 운영체제가 발급해 주며 사용자는 쓰기만 하면 된다. 사용자가 직접 핸들을 만들 경우는 없다.

3. 같은 종류의 핸들끼리는 중복될 수 없다.(단 다른 종류의 핸들은 중복된 값을 가질수도 있다)

4. 핸들의 실제 값을 몰라도 상관없다. 구분을 위한 표식일 뿐이므로 값에 의미를 부여하지 않는다.

핸들은 접두어 h로 시작되며 핸들을 저장하기 위한 별도의 데이터형이 정의되있다.
(HWND, HPEN, HBRUSH, HDC 등이 있다 - 부호없는 정수형)


2-3. 비트 OR 연산자 :

API 함수들은 작업에 대한 세부 정보(옵션)를 파리미터로 전달받는다. 전달 가능한 옵션이 여러 개가 있을 경우 하나의 파라미터에 복수 개의 옵션을 묶어 전달하는데 이때 비트 OR 연산자(|)를 사용한다.


비트 OR 연산자를 사용하면 여러개의 옵션을 묶어서 하나의 정수값만 전달하더라도 함수는 개별 비트를 테스트한 후 어떤 옵션이 선택되었는지 알 수 있다. 각 옵션의 실제값이 어떻게 정의되어 있는가는 알 필요가 없으며 매크로 상수만 알면 된다.
API 함수는 이런식의 파라미터 전달법을 흔히 사용하며 상관없는 옵션들이 하나의 파라미터에 전달되는 경우도 있고 옵션끼리 배타적인 경우도 있다.

'Windows > _Windows Programming' 카테고리의 다른 글

타이머(Timer)  (0) 2009.12.23
입력하기  (0) 2009.12.01
출력하기  (2) 2009.11.28
윈도우 기초 프로그래밍  (0) 2009.11.27
.xxx 파일 만들기  (2) 2009.11.24