1. Win32 API 프로그래밍 개요

- Win32 API 프로그래밍이란?

윈도우 운영체제가 제공하는 함수를 이용한 C 언어 기반의 프로그래밍이다.

 

-프로그래밍 방식의 변화

윈도우 운영체제 이전

: 프로그래밍이 운영체제를 제어, 모든 프로그래밍을 프로그래머가 전담했다

키보드, 마우스 등을 직접 프로그래밍했다.

 

윈도우 운영체제 이후

:  키보드, 마우스 등이 운영체제에 드라이버의 형태로 모두 들어갔다,

운영체제가 응용 프로그램에 메시지를 보내줌으로써 모든 정보를 얻는다. 

 

2. 프로그래밍 구조 비교

-프로그래밍 형식의 변화

C: main()

=> WinMain() : 응용 프로그램 윈도우 생성

=> WinProc() : 메시지 처리

 

3. 윈도우 데이터형

윈도우의 데이터형은 아주 많다(MSDN에 검색하여 알 수 있다)

하지만 모든 데이터형을 외울 필요가 없고 자주 쓰이는 것들만 이번에 알아가보자.

윈도우의 데이터형은 기존 C의 데이터형을 윈도우 스타일로 재정의한 것이다.

데이터형 정의
BYTE typedef unsigned char BYTE;
BOOL typedef int BOOL;
CHAR typedef char CHAR;
COLORREF(색상을 저장하기 위한 데이터형) typedef DWORD COLORREF
DWORD typedef unsigned long DWORD
데이터형 정의
PVOID typedef void* PVOID;
HANDLE typedef PVOID HANDLE;
HDC typedef HANDLE HDC;
HGDIOBJ typedef HANDLE HGDIOBJ;
HINSTANCE typedef HANDLE HINSTANCE;
HWND typedef HANDLE HWND
LPVOID typedef void* LPVOID:
LPWORD typedef WORD* LPWORD;
데이터형 정의
LPSTR typedef CHAR* LPSTR;
LPWSTR typedef WCHAR *LPWSTR;
LPTSTR #ifdef UNICODE //유니코드를 사용하는 프로젝트에서...
     typedef LPWSTR LPTSTR;
#else //일반 아스키코드를 사용하는 프로젝트에서...
     typedef LPSTR LPTSTR;
#endif

TCHAR #ifdef UNICODE
    typedef WCHAR TCHAR;
#else
    typedef char TCHAR;
데이터형 정의
UINT typedef unsigned int UINT;
VOID #define VOID void
WINAPI #define WINAPI __stdcall
WORD typedef unsigned short WORD;
0 ~ 65535
WPARAM typedef UINT_PTR WPARAM;
UINT_PTR #if defined(_WIN64) //64비트 운영체제
    typedef unsigned __int64 UINT_PTR
#else
    typedef unsigned int UINT_PTR
LPARAM typedef LONG_PTR LPARAM;
LONG_PTR #if defined(_WIN64)
    typedef __int64 LONG_PTR;
#else
    typedef long LONG_PTR;
#endif

 

4. 인스턴스와 핸들

운영체제는 멀티 태스킹 운영체제이다.

같은 메모장에 다른 데이터가 들어가 있다.

이 응용 프로그램들을 운영체제는 어떻게 다루고 구분하는가?

=> 인스턴스(Instance)와 핸들(Handle)

 

-인스턴스와 핸들의 실체?

HINSTANCE, HWND => HANDLE이고

HANDLE => PVOID,

PVOID => void* : 4 바이트의 양의 정수값

 

#인스턴스란 무엇인가?

-응용프로그램의 아이디(절대 중복되지 않는다.)

-같은 종류의 프로그램은 같은 인스턴스를 가진다.

ex) 메모장의 인스턴스가 14745600이라면

메모장 창이 여러 개 켜져 있을 때 그것들의 인스턴스는 모두 14745600이다.

 

#핸들이란 무엇인가?

-운영체제에서 할당한 자원의 아이디

-같은 종류의 응용 프로그램이라 할지라도

창마다 다른 핸들을 가진다.

#공통점

1) 운영체제에서 할당하는 값

2) 중복되지 않는 값 => 아이디의 속성

 

#윈도우 프로그래밍에서 가장 중요한 핸들

앞에 H가 붙는 데이터형은 전부 핸들이다.

HWND, HDC, HPEN, HBRUSH 등 => void*

 

5. 헝가리안 표기법

#헝가리안 표기법이란 무엇인가?

변수, 함수명의 명명 규칙이다.

변수명만으로 용도 파악이 용이

 

#규칙

1)의미 있는 단어를 연결하고 첫 문자는 대문자로 사용한다

2)데이터형을 의미하는 접두사를 붙인다 ex) fCount, nNumber(i'n't)

데이터형 접두사
BOOL, bool b
char ch, c
int, short i, n
long l
float f
double d
배열 a
DWORD dw
문자열 sz, s, str
포인터 p
핸들 h
전역변수 g_
ex) g_nVariable
윈도우 메시지 msg

 

위의 모든 내용은

유튜브 아워즈팜X나우캠퍼스, "Win32 API 1강. Win32 API 프로그래밍 구조",

 

 

'Win32 API' 카테고리의 다른 글

Win32 API 프로그래밍 구조  (0) 2023.04.18

+ Recent posts