RakunBear
2025. 3. 14. 10:11
2025. 3. 14. 10:11
- WinAPI (Windows Application Programming Interface)
- 운영체제가 응용프로그램 개발을 위해 제공하는 함수의 집합
- 속성 -> 링커-> 시스템 -> 하위 시스템 -> Window
- 핸들(Handle) : 윈도우 각 객체를 구분하는 인덱스 번호(정수)
- 메시지(Message) : 윈도우에서 발생하는 이벤트를 운영체제가 윈도우에 전달하는 데이터 모음
HINSTANCE
: 메모리상 객체를 다루는 핸들
HWND
: 윈도우 핸들
APIENTRY
: 진입점 (WINAPI
)와 동일
WNDCLASS
: 윈도우 데이터 셋팅 구조체 typedef struct _WNDCLASS {
UINT style; // 클래스 스타일
WNDPROC lpfnWndProc; // 윈도우 프로시저
int cbClsExtra; // 클래스 추가 메모리
int cbWndExtra; // 윈도우 추가 메모리
HINSTANCE hInstance; // 인스턴스 핸들
HICON hIcon; // 아이콘 핸들
HCURSOR hCursor; // 커서 핸들
HBRUSH hbrBackground; // 백그라운드 브러시 핸들
LPCWSTR lpszMenuName; // 메뉴 이름
LPCWSTR lpszClassName; // 클래스 이름
} WNDCLASS, *PWNDCLASS;
- WNDCLASS를 전역 변수로 저장하고 사용하면, 창이 여러개 되었을 떄, 같은 윈도우 셋팅에 사용가능 (아니면, 나중에 팝업창 등이랑 섞여서 문제 생길 수도 있음 )
RegisterClass({WNDCLASS})
: 윈도우 데이터 셋팅 등록
ShowWindow({WNDCLASS}, {int:창표시상태})
: 초기 표시 상태를 지정
MSG;
: 윈도우 이벤트를 구조체
GetMessage(&message, 0, 0, 0)
: 메시지 입력 받기
PostQuitMessage(0);
: 프로그램 종료 메시지
BOOL InvalidateRect(HWND hWnd, const RECT* lpRect, BOOL bErase);
TranslateMessage(&{MSG})
: 메시지 변환; 키보드 입력 관련 메시지 처리;
DispatchMessage(&{MSG})
: 메시지를 올바른 윈도우 프로시저로 보내는 역할
그리기 메서드
BeginPaint({HWMD},{PAINTSTRUCT})
: 그리기 시작 알림
EndPaint({HWMD},{PAINTSTRUCT})
: 그리기 종료 알림
Rectangle({HDC},{LEFT},{TOP},{RIGHT},{BOTTOM})
: 사각형 그리기
Ellipse
: Rectangle
과 동일
CreatePen({선타입},{두께},{RGB})
: HPEN
생성; 생성된 HPEN
핸들 반환
SelectObject(hdc, {대상})
: 대상 선택; 교체된 대상 반환 (이전 대상)
DeleteObject({대상})
: 대상 삭제
창
AdjustWindowRect(RECT&, WINDOW_STYLE, bool {MENU})
: