windows 프로그래밍 기초 용어 정리




  • API (Application Programming Interface)
    • Application이 OS나 DataBase Management System (DBMS)등과 통신할 때 사용되는 언어나 메세지의 형식을 말한다. 
    • Application 개발자들을 위해 제공되는 함수 집합으로 많은 종류의 API가 존재한다. 그 중 32bit인 windows 95/98,2000,NT,XP등에서 제공하는 API를 Win32 API라고 한다.
    • 대표적인 함수로 CreateWindow(),ShowWindow(),UpdateWindow()등이 있다.
  • SDK (Software Development Kit)
    • Win32 API를 이용하여 프로그램을 개발하는 도구 즉 소프트웨어 패키지로 각종 편집 툴, 라이브러리, 헤더파일,도움말,예제 프로그램들로 구성되어 있다. 
    • 대표적인 예로, VisualStudio c++등이 있다. 
  • Windows GUI
    • windows program들은 위와 같이 대부분 일관된 사용자 인터페이스를 제공한다. 
    • 시스템 메뉴, 메뉴바 ,툴바, 최대/최소/닫기 버튼 등으로 구성 되어있다. 
    • 사실 툴바 메뉴바 등등도 윈도우이다. 실질적으로 하나의 윈도우는 여러 윈도우의 집합이다. 
  • Resource
    • 메뉴,아이콘, 커서,비트맵,문자열, 버전정보 등 사용자 인터페이스를 구성하는 자원들로 읽기 전용 정적 데이터를 말한다. 
    • 리소스는 프로그램 실행중 변경되지 않는 정적 데이터이다. c/c+과 같은 언어로 관리하지 않고 Resource Script파일로 관리한다.
    • 윈도우즈 프로그램의 큰 특징 중 하나가 소스코드와 리소스가 분리 되어 있다는 것이다.  DOS기반 프로그래밍에서는 프로그램에 쓰이는 리소스를 정의할때 배열로 불러와 저장해 사용하거나, 외부 파일로 만들어 둔 후 사용했다. 하지만 윈도우즈 프로그래밍에서는 이런 데이터들을 리소스로 만들어 놓고 소스코드와 별도로 컴파일하고, 링크시 최종 파일에 합쳐진다. 
  • Event ,Message
    • 마우스를 클릭하거나 창의 크기를 줄이는 등 기계적인 동작을 하면 이벤트가 발생한것이 되고, windows OS에서 이것을 감지해 Message의 형태로 해당 프로그램에 전달하게 된다. 
    • 윈도우 메시지의 경우 "WM_"으로 시작하고, 버튼 컨트롤 메세지의 경우 "BM_"으로 표시된다. 
      • ex) WM_CREATE : 윈도우가 생성될때 발생하는 메세지.
  • Message Queue(FIFO : First In First Out)
    • 사용자의 컴퓨터 조작에 의해 발생한 이벤트는 메시지 형태로 만들어져 윈도우즈 OS가 관리하는 메세지 큐라는 곳에 모이게 된다. 
    • 하나의 프로그램이 실행되면 하나의 메세지 큐가 할당된다. 
    • 윈도우에서 메세지가 발생하면 OS에 의해 해당 메세지 큐로 전달하게 된다. 
    • Queue의 속성을 그대로 가지며, FIFO 형태로 먼저 들어온 메세지큐가 먼저 나가게 된다. 
  • Message Loop
    • 윈도우즈 OS가 각 응용프로그램 메세지큐에 전달했던 메세지들을 분석하는 무한 루프이다. 
  • Window Procedure
    • Massage Loop에서 해석한 메세지를 구체적으로 처리하는 기능을 하는 소스 부분으로 OS가 호출하도록 콜백(callback) 함수로 만든다. 
    • 콜백함수는 함수 앞에 키워드 CALLBACK을 쓰며 , 호출은 OS가 한다. 
  • Handle
    • Application에서 현재 사용중인 객체(윈도우,커서,아이콘,메뉴 등)들을 구분하기 위해 윈도우즈 OS가 부여하는 고유 번호로 32bit 정수형을 사용한다. 
    • 핸들은 운영체제가 발급해주며, 사용자는 쓰기만 하면된다. 
      • 예를들어, 윈도우나 파일을 열면, OS에서는 핸들을 부여한다. 사용자는 필요에 따라 핸들을 저장해 두었다가 해당 윈도우나 파일을 다시 참조할때 , 저장해둔 핸들을 사용해서 접근하면 된다. 
      • 실제 그 값이 무엇인지 전혀 알 필요가 없다. OS가 부여해주는 핸들을 대입받아 쓰고 버리면 된다. 
    • 문자열로 식별하는것 보다 정수형으로 구분하는 것이 처리속도가 월등히 빠르기때문에 핸들은 정수형을 사용한다. 
  • Divice Context
    • 그래픽과 관련된 모든 옵션을 모아놓은 구조체이다.
  • GDI (Graphic Device Interface)
    • GDI는 선그리기, 도형그리기, 컬러 관리 등과 같은 그래픽 함수들을 구현하는 일을 담당하는 윈도우즈의 구성요소로 디스플레이,프린터,기타 장치에 대한 그래픽 출력을 위하여 제공하는 함수와 그와 관련된 구조이다. 
    • GDI객체(Object)에는 펜, 브러시,폰트,팔레트,비트맵 등이 있다. 



댓글

이 블로그의 인기 게시물

[Win32 API] WINAPI - 함수호출규약

JAVA Frame Icon setting

JAVA Spinner