본문 바로가기

무작정 따라해보기(정리, 문제풀기)/Win32API

3. Win32 API 프로그래밍

728x90

 

'나우캠퍼스X아워즈팜'유튜브의 'Win32 API 1강. 윈도우 데이터형 (3/3)'영상을 보고 정리한 내용입니다.

추가로 INSTANCE와 HANDLE의 차이점 <- 이 글도 읽어보았고, 참고해서 적은 부분이 있습니다.(핸들 부분)

 

우리의 운영체제는 멀티 태스킹(multi tasking) 운영체제 즉, 여러 프로그램을 동시에 실행할 수 있게 되어있습니다. 그런데 같은 프로그램의 데이터를 운영체제에서 구별하려면 어떻게 해야할까요?? 바로 '인스턴스(Instance)'와 '핸들(Handle)'로 구별할 수 있습니다.

운영체제가 응용 프로그램을 실행하거나 구분할 때 인스턴스와 핸들을 이용합니다.

인스턴스와 핸들 또한 결국 '값'입니다. 그렇기 때문에 데이터를 저장할 공간이 필요하고, 그래서 데이터형이 반드시 필요합니다.

데이터형은 결국 void*형(4바이트의 양의 정수값이며 메모리 주소를 저장한다.)입니다.

 

 

인스턴스

  • 응용 프로그램의 아이디(중복되는 것 없다. os가 할당해준 응용프로그램의 아이디)
  • 같은 종류의 프로그램은 같은 인스턴스를 가진다.

 

핸들

  • 운영체제에서 할당한 중복되지 않는 자원의 값들(윈도우, 펜, 브러쉬 등)이 할당된다. 그 값, 즉 핸들을 이용하여 운영체제의 자원을 다룰 수 있다.(자원을 빌려서 사용하는?) 한마디로 핸들은 운영체제에서 생성된 자원들을 제어하기 위한 정수값이다.
  • os의 자원을 사용할 때 사용!
  • 구체적으로 무엇인가를 다룰 때에 사용
  • 많이 사용되는 핸들이 가장 중요하다 할 수 있으며 핸들의 값을 저장하기 위한 데이터형은 void*형이라는 것을 꼭 기억해 두어야 한다.

 

인스턴스, 핸들 모두 운영체제에서 할당하며 중복되는 값은 없도록 할당한다는 공통점이 있다.

 

헝가리언 표기법

  • 의미를 알 수 있도록 변수명, 함수명, 등의 이름을 짓는 것
  • 의미 있는 단어를 연결 -> ex) User + Name = UserName
  • 데이터형을 알 수 있도록 접두사 붙이기 -> ex) fValue
  • 접두사를 붙이는 예
데이터형 접두사
BOOL b bValue
char c, ch cValue
float f fValue
int, short i, n nValue
배열 a aValue[10]
DWORD dw dwValue
문자열 sz, s, str szValue
포인터 p pValue
핸들 h hValue
전역변수 g_ g_fValue
윈도우 메시지 msg msgMessage

 

혹시 제가 잘못 이해한 부분이(잘못된 정보) 있다면 알려주시면 감사하겠습니다 :)