CALLBACK
시스템이 사용자 함수를 호출함.
<=> call : 사용자가 system call을 통해 함수를 수행.
#define CALLBACK stdcall
함수호출방식
참고주소 : http://www.winapi.co.kr/clec/cpp2/16-1-2.png
스택 포인터 값은 아래로(-방향으로) 증가한다.
함수에 진입할 때 bp = sp함으로써 함수들은 bp레지스터를 관리하여 내부 연산을 처리한다.
스택 처리방식에 의해 나누어진다.
함수가 return할 때 함수 인자에 대한 정리를 caller가 할 것인지 callee가 할 것이냐에 따라 구분됨.
_cdecl : 함수 스스로가 return까지 정리(리턴 주소가 제거됨)
...
HINSTANCE : 프로그램의 인스턴스 핸들 값. (주로 전역변수로..)
LPCTSTR : const형의 문자열 변수. 이후에 내용을 변경할 수 없다.
- LP(포인터), C(const), T(TCHAR, char 혹은 unsigned short), STR(문자열)
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszCmdParam, int nCmdShow);
crtstartup이 winmain함수를 호출.
APIENTRY
#define APIENTRY stdcall
hInstance : 프로그램 인스턴스 핸들.
base address(실행파일이 로딩 되었을 때 시작주소, 0x400000)와 관련되어 있음.
lpszCmdParam : 명령행으로 입력된 인수. 문자열 변수가 한 개 이므로 프로그래머가 토큰을 나누어 주어야 함.
nCmdShow : 프로그램이 실행될 형태. 다른 프로세스의 CreateProcess호출로 인수를 받아 최대, 최소화 형태를 바꿀 수 있다.
지역변수 선언
HWND hWnd; // 윈도우 핸들.
MSG Message; // 메세지큐에서 하나의 메세지를 받기 위한 변수. (6개의 elements로 구성)
WNDCLASS WndClass; // 시스템에 윈도우를 만든다고 신고하기 위한 변수(설계도 등록)
WinMain의 기본구조
1. 설계도 작성
2. 윈도우 생성
3. 메세지 가져오기(루프)
4. 종료 리턴
'컴퓨터 공부 > Win32 API 프로그래밍' 카테고리의 다른 글
[4월 28일 3교시] 출력(DC) (0) | 2009.04.28 |
---|---|
[4월 28일 2교시] WinMain 기본 프로그램 분석2 (0) | 2009.04.28 |
[4월 27일 3교시] (0) | 2009.04.27 |
[4월 27일 2교시] 윈도우즈 개요 (0) | 2009.04.27 |
[4월 27일 1교시] 개요 (0) | 2009.04.27 |