윈도우 API란?
API란 Application Programming Interface로 운영체제가 제공하는 함수의 집합정도로 이해할 수 있습니다.
운영체제는 하드위어와 응용 프로그램 사이에 위치하여 메모리 및 하드웨어를 관리하는데 이런 일연의 과정에서 운영체제에 종속적이면서도 운영체제의 규정을 따를 수 밖에 없게 되는데, 현실적으로 프로그래머가 이러한 운영체제의 복잡한 내부 동작까지 이해하고 있기는 어렵기 때문에 프로그램을 위한 함수를 제공하는데 그것이 윈도우 운영체제의 API 입니다.
변수 명명법
윈도우 API 는 특별한 변수 명명법이 존재합니다.
대부분 변수명에 접두어를 추가하여 이름을 붙히게 되며, 이 접두어를 보고 변수의 형태를 알 수 있습니다.
접두어 | 원래말 | 의미 |
cb | Count of Bytes | 바이트 수 |
dw | double word | 부호없는 long형 정수 |
h | handle | 윈도우, 비트맵, 파일 등의 핸들 |
sz | NULL terminated | NULL 종료 문자열 |
ch | Character | 문자형 |
a | Array | 배열 |
w | Word | 부호없는 정수형 |
i | Integer | 정수형 |
p ,Ip | Long Pointer | 포인터형 |
b | Bool | 논리형 |
예) hInstance-> 핸들 ,Iprect는 포인터, wParam 정수형 등...
사용자 정의 데이터형 (windef.h 파일에 typedef로 선언되어 있음)
데이터 형 | 의미 |
BYTE | unsigned char |
CHAR | char |
WORD | unsigned short |
DWORD | unsigned long |
LONG | unsigned long |
BOOL | int (TRUE / FALSE) |
기존 데이터형으로도 가능하지만 새로운 데이터형으로 정의하는 이유는 운영체제의 따라서 비트수가 변화하기 때문에 32 bit형의 프로그램이 64 nit 형에서는 정상적으로 동작하지 않을 수 있기 때문입니다.
추후 동작하지 않더라도 헤더 파일에 타입 정의 부분만 수정하면 됨으로 이식성이 용이하기 때문입니다.
핸들 (handle)
구체적인 어떤 대상에 붙여진 번호이며, 정수값입니다. 핸들의 특징은 아래와 같습니다.
핸들(HANDLE)
: 위에 보면 같은 계산기 프로그램이지만 각기 Windows Handle 값이 다른것을 확인 하실 수 있습니다.
운영체제에 의해 생성된 리소스나 오브잭트를 제어하기 위한 32bit 정수값을 의미하며 (어떤 프로그램을 제어하기 위한 값) 프로세스 하나는 여래개의 윈도우를 가질 수 있습니다. 그 윈도우들을 제어하기 위한 값이 핸들(handle)입니다.
인스턴트(INSTANCE)
: 어떤 프로그램의 대상의 실체를 의미합니다. 특정한 어떤 대상에만 국한되는것이 아닌 범용적인 개념으로 C에서 int a,b,c를 선언할때 그 자료형의 길이를 표현할 뿐 그 자체로는 아무것도 나타낼 수 없습니다. int형 자료가 a,b,c가 생성될 뿐입니다.
위 자료형이 a,b,c로 서로 구분되지만 결국 같은 int형 자료라는 것은 알 수 있는 것 처럼 위에 동시에 2개의 계산기를 사용했지만 인스턴트 핸들 값은 같은 것을 확인 할 수 있습니다.
두개의 프로그램이 계산기 인 실체가 같기 때문입니다.
즉, 인스턴트란 프로그램을 구분하기 위한 것으로 그 실체를 구분해주기 위한 단위 입니다.
비트 or 연산자
기존에 콘솔 프로그래밍에서는 많이 사용하지 않는 연산자이지만, 윈도우 API 함수에서는 비트 or 연산자 (|)를
빈번하게 사용하며 , 함수의 인자값을 전달할때 여러개의 인자를 or (|) 연산자로 묶어 하나로 전달합니다.
자세한 비트별 배정의 경우는 아직 공부를 조금 더 해야하기 때문에 기본 특징만 파악하고 생략하도록 합니다.
'프로그래밍 관련 > Win API' 카테고리의 다른 글
WIndows API - #4. 윈도우창 출력 함수 자세히보기(1) (0) | 2015.08.23 |
---|---|
WIndows API - #3. 윈도우창에 Hello World 출력하기(2) (0) | 2015.08.21 |
WIndows API - #3. 윈도우창에 Hello World 출력하기(1) (4) | 2015.08.21 |
WIndows API - #2. Hello World MessageBox 출력하기(2) (0) | 2015.08.21 |
WIndows API - #2. Hello World MessageBox 출력하기(1) (0) | 2015.08.20 |