프로그래밍 공부
작성일
2023. 6. 14. 21:41
작성자
WDmil
728x90

윈도우 API

 

Microsoft Windows 운영체제에서 개발자가 응용프로그램을 작성할 때 사용하는

응용프로그램 인터페이스(Application Programming Interface)이다.

 

이 API는 Windows 운영체제와 상호작용을 하기 위한 기능을 제공하며, 응용프로그램이 하드웨어

파일시스템 그리고 그래픽등의 리소스에 접근하고 조작할 수 있도록 해준다.


이러한 윈도우 API의 동작방식은 일반적인 함수처럼 동작하며, 다음과 같이 이루어진다.

 

메시지 -> 메시지큐 -> 메시지 루프 -> 윈도우 프로시저


  • 메시지 ( Message )
    • 윈도우간의 통신에 사용되는 데이터 구조
    • 응용 프로그램이나 운영체제로 부터 이벤트에 대한 알림을 받거나 작업을 요청, 응답 받는데 사용된다.
  • 메시지 큐 ( Message Queue)
    • 메시지의 데이터구조를 큐 형태로 보관하는 컨테이너
    • FIFO (선입선출) 구조로 이루어지며, 이벤트에 대한 알림을 받았을때 등 메시지를 대기시키는 컨테이너이다.
  • 메시지 루프 ( Message loop )
    • 메시지를 윈도우 시스템에서 받아온 후, 해당되는 메시지를 알맞은 처리과정으로 전달하는 루프문.
    • while를 통해 구현된다.
  • 윈도우 프로시저 ( WIndow Procedure )
    • 받아온 메시지를 원하는 데이터값으로 처리하기 위한 코드 를 말한다.
    • 메시지에 해당하는 동작을 수행하고 필요한 경우, 조작이나 업데이트 등을 작업하는 코드뭉치이다.

윈도우 함수를 사용하여, 데이터를 처리하게 되는데.

 

이러한 함수를 사용하기 위해 문자열 타입을 지정해주어야 한다.

 

문자열 타입은 다음과 같다.


  1. LPSTR (Long Pointer To a String)
    • LPSTR은 가변적 문자열 데이터를 가리키는 포인터 이다.
    • long pointer str = char*
    • 해당 포인터를 통해 문자열 데이터를 수정하거나 복사, 변경 작업을 수행한다.
    • 주로 ANSI 문자열을 처리하는데 사용된다. [ ANSI 문자열은 1바이트로 각 문자를 표현, 영어 및 일부 특수문자를 표현할 수 있다. ]
  2. LPCSTR ( Long Pointer To a Const String )
    • LPCSTR은 읽기 전용 상수 문자열 데이털르 가리키는 상수 포인터 이다.
    • long pointer const str = const char*
    • 해당 포인터를 통해 문자열 데이터를 수정할 수 없다. 그럼으로 읽기전용으로만 사용되기에. 안전하게 문자열 참조가 가능하다.
    • 주로 ANSI 문자열을 처리하는데 사용되며, 읽거나 출력하는 작업에 활용된다.
  3. LPWSTR ( Long Pointer To a Wide String )
    • LPWSTR은 가변적인 유니코드 문자열 데이터를 가리키는 포인터 이다.
    • long pointer string = wchar_t*
    • 해당 포인터를 통해 문자열 데이터를 수정하고, 복사 변경 하는 작업을 수행할 수 있다.
    • 주로 유니코드 문자열을 처리하는데 사용되며, 다국어 문자 및 특수문자를 수정, 읽기, 출력 작업에 활용된다.
  4. LPCWSTR ( Long Pointer To a Const Wide String )
    • LPCWSTR은 읽기 전용 상수 유니코드 문자열 데이터를 가리키는 상수 포인터 이다.
    • long pointer const string = const wchar_t*
    • 해당 포인터를 통해 문자열 데이터를 수정할 수 없다. 그럼으로 읽기전용으로만 사용되기에. 안전하게 문자열 참조가 가능하다.
    • 주로 유니코드 문자열을 처리하는데 사용되며, 읽거나 출력하는 작업에 활용된다.

이러한 윈도우 API는 다음과 같은 스텍 정리구조를 가진다.

  • STD_CALL
    • 호출당한 함수에서 스텍을 정리한다.
728x90

'컴퓨터 용어 정리' 카테고리의 다른 글

Device Context  (0) 2023.07.13
Delta_Time  (0) 2023.06.21
STL_AdapterContainer  (0) 2023.05.28
STL_AssociativeContainer  (0) 2023.05.28
STL_SequnceContainer  (0) 2023.05.28