본문 바로가기

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

1. Win32 API 프로그래밍

728x90

 

'나우캠퍼스X아워즈팜'유튜브의 'Win32 API 1강. 프로그래밍 기초 (1/3)'영상을 보고 정리한 내용입니다.

 

Win32API 프로그래밍이란 무엇인가?

  • 윈도우 운영체제가 제공하는 함수를 이용한 C언어 기반의 프로그래밍
  • Window OS. 즉 윈도우 운영체제(Window Operating System)로부터 오는 모든 정보를 메시지(양의 정수값)로 받아서 처리를 해준다.
  • os와 밀접한 관련이 있으며 계속 관여한다.
  • C언어 프로그래밍에서는 진입점이 main()함수이지만 Win32API 프로그래밍은 진입점이 WinMain()이다. 그리고 WinProc()함수에서 os로부터 발생하는 메시지를 받아오고, 처리해준다.
  • WinMain() 함수 --> 응용프로그램 윈도우 생성
  • WinProc() 함수 --> os로부터 메시지를 받아오고 처리

 

Win32API 프로그래밍에서 가장 중요한 것?

  • **인스턴스와 핸들**

 

Win32API 프로그래밍을 할 때

  • os의 자원을 쓰는 것이기 때문에 자원을 쓰고 반환해야함

 

C 프로그래밍에서의 키 입력

  • while문을 돌며 만약 키 입력이 있다면( _kbhit()함수이용 ) int형이나 char형 변수에 키에서 입력된 값을 저장한다( _getch() 함수이용). 그리고 char형으로 출력한다. 이렇게 하면 while문을 계속 돌면서 키에서 입력되는 문자들을 콘솔창에 출력할 수 있다.
  • conio.h 헤더의 함수들(콘솔의 입출력 함수를 제공하며 Visual Studio에서만 사용 가능)
    • 함수명반환값
      _kbhit() 키 입력이 있다면 true. 아니면 그 외의 값
      _getch() 키에서 입력된 값을 아스키코드값으로 반환

 

Win32API 프로그래밍에서의 키 입력(일부 설명)

WinProc()함수에서 메시지를 받아오고 처리를 한다고 했습니다. 프로그램이 실행되면 WinProc() 함수에서는 계속 메시지를 받아오고 처리를 하면서 반복합니다. 그래서 WinProc() 함수에서는 os로부터 들어오는 메시지를 이용하여 어떠한 입력을 받고 출력을 할 수 있습니다.

  • WinProc() 함수에서 받는 메시지 중 'WM_CHAR'메시지는 키보드에서 입력을 했을 때 넘어오는 메시지이다.
  • 키보드 입력을 하면 os가 WinProc()함수에 'WM_CHAR'메시지와 부가적인 다른 메시지를 넘겨준다.
  • C언어에서는 printf()함수를 이용하여 콘솔창에 출력을 했지만 Win32API에서는 TextOut()함수를 사용하여 윈도우 창에 텍스트를 표시한다.
  • 키 입력하면서 출력하기
    • 문자열을 저장하는 버퍼를 만든다 -> 문자열 길이(idx) 저장 -> 버퍼의 idx번째 방에 os가 전달한 문자를 저장 -> 버퍼의 idx+1번째 방에 NULL 저장
    • InvalidateRect()함수를 사용하여 WM_PAINT 메시지 발생시키기 ---> 화면을 지우고 다시 그려달라는 함수!(이 함수를 실행하면 또 관련된 메시지가 발생함--> 'WM_PAINT')
    • TextOut() 함수를 이용하여 출력

 

Win32API 프로그램 영역

 

Win32프로그램을 실행시키면 이런 창이 뜨는데 가장 중요한 영역은 빨간 네모 영역인 '클라이언트 영역'입니다. 입력을 받고 화면에 그려주는 모든 부분이 저 클라이언트 영역에서 실행됩니다.

 

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