WIN API
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
MyRegisterClass(hInstance);
WIN API에서 _IN_ 은 필수적으로 필요로 하는 매개변수로,
_IN_은 우리가 수정할 수 없는 매개변수로 0값을 절대적으로 들어오지 못하게 만든다.
만약 0값이 들어오게 되면 프로그램은 폭파된다.
hlnstance = 게임의 주소값이 들어가는 자리이다.
nCmdShow = 작업 관리자나 아래에는 창이 들어와있지만 보여주지 않을 것이냐 보여줄 것이냐
하는 역할을 담당한다.
MyRegisterClass(hlnstance);
창을 만들기 위해서 클래스를 등록한다는 뜻이다.
WM_KEYDOWN; -> 실제로 누르면 이런 메시지가 들어온다는 것을 받아들이는 구문
키보드가 입력을 받았다는 것만 알지 A키를 누른 것인지 B키를 누른건지 모르는데
이를 인식시켜 주는 것이 wParam 이다.
위의 태그가 그 좌표를 알려준다.
마우스 역시 이동하여 좌표값을 인식시켜 주는 것이 있는데
이 역할은 IParam이 한다.
GetMessage는 while 문은 어디다가 표시하냐라는 문장이다.
즉, GetMessage가 원래는 계속 실행이 되는 것인데
메시지가 없으면 while 문이 빠져나가진 않고 잠재우는 것이다.
즉 다시 말해서 GetMassage는 sleeptime이 존재하는 함수이다.
담아둘 메시지가 없으면 잠재우며
while (GetMassage&msg, NULL, 0, 0) /
{
if(msg.message == WM_QUIT)
return static_cast<int>(msg.wParam);
DispatchMessage(&msg);
}
while (GetMessage (&msg, NULL, 0, 0)) 에서
첫번째 매개변수에 &가 없으면 사본이 들어가서 아무 것도 넣어지지 않는다.
NULL은 메시지를 다 받으려고 NULL 값을 넣어준 것이다.
뒤에 있는 것은 메시지 필터인데
일단 메세지를 받기는 다 받아야 하니, 0,0으로 설정된 것이다.
만약 1,2로 설정되어 있다면 1~2까지 안받겠다는 이런 뜻이다.
if문 msg.message == WM_QUIT 에서 WM_QUIT는 메시지를 끝내겠다는 뜻이다.
winClass.style = CS_HREDRAW | CS_VREDRAW; // 얘네 설정 안해주면 줄였다 늘렸을 때 그 영역이 안나온다
winClass.lpfnWndProc = WndProc; // 함수 포인터임
winClass.cbWndExtra = 0; // 윈도우 여분 메모리 둘 다 사용 안합니다.
winClass.cbClsExtra = 0; // 클래스 여분 메모리 둘 다 사용 안합니다.
winClass.hInstance = hInstance;
winClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); // 밑에 시작쪽에 있는게 큰 아이콘 NULL에 핸들 값이 넣어주면 Icon을 변경해줄 수 있다.
//NULL이면 윈도우즈에 기본적으로 제공하는 Icon을 사용하겠다라는 뜻이다.
winClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // 손 대면 조그맣게 뜨는게 작은 아이콘 NULL에 핸들 값이 넣어주면 Icon을 변경해줄 수 있다.
//NULL이면 윈도우즈에 기본적으로 제공하는 Icon을 사용하겠다라는 뜻이다.
winClass.hCursor = LoadCursor(NULL, IDC_ARROW);
winClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); //+1~3까지 그냥 색깔 바꿔주는 것
// 그림을 그리면 종이가 필요하지 않냐, 그 종이 색깔 말하는 것이다.
winClass.lpszMenuName = NULL;
winClass.lpszClassName = L"WINCLASS";
'WINDOWS' 카테고리의 다른 글
윈도우 핸들 (Windows Handle Object) (0) | 2024.05.24 |
---|---|
영역 범위 함수 (0) | 2023.02.14 |