728x90
반응형
■ Win32API
■ 기본형
운영체제가 호출하는 함수
함수호출 규약(cdecl or stdcall)
HWND 윈도우 핸들러 - 번호라서 int형일거임
UINT
WPARAM - 워드 4바이트 unsigned int
LPARAM -
워드는 16bit때 2바이트엿엇음...
g_hInst 전역변수의 g
LPSTR long pointer string zero = char*인것이다.
WinMain 엔트리포인트
APIENTRY 엔트리포인트이다, cdecl인지 stdcall인지 정보도ㅗ 들어있다.
컴파일하면 없어진다.
두번째 인자는 안쓴다.
lpszCmdParam 프로그램 실행할때 인자
nCmdShow 보여줄꺼냐 안보여줄꺼냐
WNDCLASS 구조체
다른함수가 hInstance를 공유할수있도록 해준다.
구조체 멤버들 쓰레기값에 대한 초기화
hbrBackground 창의 배경
hCursor 화살표
ICON 아이콘
hInstance 반드시 넣어야된다. 윈도우가 알아서 쓰겟지
lpfnWndProc = 함수주소를 넣는다.
WndProc = WndProc
이 구조체에다가 운영체제가 보내주는 메시지(커서가 움직인다던가...)를 받을 함수이름을 기재해 놓은 것이다.
함수원형을 위에 써놓은 이유가 이부분에서 사용하기 위함이다.
게임 해킹안해도 운영체제를 해킹하면 됨.
오토마우스 같은거를 커널에 설치하면됨.
실행중인 한단위를 클래스라고 부른다.
lpszClassName = lpszClass 이구조체는 이 클래스 소속이다라는것을 구분하기 위함
MenuName 메뉴이름을 추가해줘야됨
style CS 윈도우 가로세로 창 조절이 가능하다
RegisterClass - 창의 정보를 구조체에 만들고 구조체대로 등록하라고하는것임
CreateWindow
lpszClass 클래스?
lpszClass 창제목
OVERLAPPEDWINDOW 창설정과 관련된 모든기능이 모여잇음
CW_USEDEFAULT X좌표, Y좌표, 가로크기, 세로크기
직사각형그림 원그림도 마찬가지임.
NULL 메뉴
(HMENU)NULL
hInstance
NULL
ShowWindow( , 2번째인자) 2번째인자가 창을 띄울건지 안띄울건지 결정한다. 이는 WinMain의 4번째인자이다.
도스창이 닫힌채로 도스창이 실행되고잇다고 생각해라...
창이 마음속으로 만들어진다.
창이뜬다.
getmessage 윈도우가 보내주는 메시지를 받는 함수이다. 초고속으로 메시지를 받고있다.
즉 초고속으로 윈도우가 메시지를 보내고있다.
다 처리못하면 버려버린다.
메시지큐(원형큐)
저메시지를 반드시 처리해야하는 걸 RTOS
그냥 메시지를 처리하는건 일반 운영체제
실시간으로 큐를 처리해야한다.
제일 마지막 메시지를 처리한다.
창닫는메시지가 0을 리턴한다.
return Message.wParam 정상종료인지 비정상종료인지를 나타낸다.
&Message 메시지를 가져와서 저장하는 곳.
Translate 키보드입력을 처리 다양한 키조합
Dispatch 윈도우가 처리하고 남은 쓰레기를 이 함수에 넘긴다. 이함수가 윈도우가 처리하고남은걸 운영체제에 보고하고
내 프로그램을 처리하겟다. WndProc이 호출된다.
WinMain은 껍데기이다.
WndProc이 실제 핵심인데 일을 뭘할지를 결정을 여기서 한다.
iMessage메시지 번호
PostQuitMessage(0) getmessage에 0을 전달한다.
꼽표를 누르면 메시지를 생성하는데, WM_DESTROY를 넣은 메시지가 만들어지고
PostQuitMessage에 의해 윈도우에 새로운 큐(0)를 만든다.
프로그램이 지가 언제 닫기는줄도 모르고 꺼지면 안되니까. 창닫는것도 메시지로 처리하게 만든다.
▲ 실행결과
▲ 한자 해결방법
728x90
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20151113 김태현 WinAPI 1일차 기본문 분석 (3) | 2015.11.13 |
---|---|
20151112 윤재희 API #1 WinAPI 기본형 코드 (4) | 2015.11.13 |
2015-11-12 Win32 API 개인 업무일지 - 천정호 (6) | 2015.11.13 |
20151112_주재민_API_01 (4) | 2015.11.13 |
2015.11.12_개인업무일지_[Win32API #1]_이량경 (5) | 2015.11.13 |
20151112_안향진_API_01 (5) | 2015.11.13 |
20151112-김재홍-win32API_1일차-첫번째예제 (3) | 2015.11.13 |
20151112 - WinAPI 첫시간 일지 엄민웅 (5) | 2015.11.13 |