ㅇ WinMain
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance ,LPSTR lpszCmdParam,int nCmdShow
- hInstance : 프로그램의 인스턴스 핸들
- hPrevInstance : 바로 앞에 실행된 현재 프로그램의 인스턴 핸들, WIN32에서는 항상 NULL, 호환성을 위해 존재
- lpCmdLine : 명령행, 도스의 argv인수에 해당
- nCmdShow : 프로그램이 실행될 형태, 최소화, 보통모양이 전달
※ 인스턴스(Instance) : 클래스가 메모리에 실제로 구현된 실체를 의미, 실행된 프로그램 ==> 인스턴스
- 각 메모장은 서로 다른 인스턴스 핸들을 가지고 있다.
- 인스턴스 핸들값으로 두개의 메모장 구별
- hInstance란 프로그램 자체를 일컫는 정수값,
- WinMain은 윈도우를 만들고 화면에 출력하기만한다.
- WndProc 에서 대부분의 일을 한다. ==> 메시지 처리 함수
ㅇ 윈도우 클래스
- 윈도우를 만들기 위해서는 윈도우 클래스를 먼저 등록한 후 CreateWindow 함수를 호출
- Window.h에 정의 되어 있는 구조체
typedef struct tagWNDCLASS
{
UINT style; // 윈도우 스타일 정의
WNDPROC lpfnWndProc; // 메시지 처리 함수 지정
int cbClsExtra; // 예약어
int cbWndExtra; // 예약어
HINSTANCE hInstance; // WinMain의 인수로 전달된 hInstance값을 대입해주면 된다.
HICON hIcon; // 출력 아이콘
HCURSOR hCursor; // 마우스 커서
HBRUSH hbrBackground; // 배경색
LPCSTR lpszMenuName; // 사용할 메뉴 지정
LPCSTR lpszClassName; // 윈도우 클래스 이름 지정
} WNDCLASS
ㅇ RegisterClass
ATOM RegisterClass( CONST WNDCLASS *lpWndClass);
- 윈도우 클래스를 정의한후 윈도우 클래스를 등록
- 함수 인수로 WndClass 구조체의 번지를 넘겨준다.,
ㅇ 사용예)
WNDCLASS WndClass;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=(WNDPROC)WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
ㅇ CreateWindow
HWND CreateWindow(lpszClassName, lpszWindowName, dwStyle, x, y, nWidth, nHeight, hwndParent, hmenu, hinst, lpvParam)
- 윈도우를 등록한 후 실제 윈도우를 생성 할때 사용
- lpszClassName : 생성하고자 하는 윈도우의 클래스를 지정하는 문자열,
앞에서 정의한 WndClass 구조체의 lpszClassName 멤버의 이름을 기입 ==> 중요함
- lpszWindowName : 윈도우의 타이틀바에 나타날 문자열
- dwStyle : 윈도우즈 형태를 지정하는 인수
- X, Y, nWidth, nHeight : 위치, 크기 지정
-hWndParent : 부모 핸들 지정, 없으면 NULL
- hmenu: 사용할 메뉴의 핸들 지정, 없으면 NULL
- hinst : 프로그램 핸들 지정, Winmain의 인수로 전달된 hInstance를 대입
- lpvParam: 특수 목적에 사용, 보통은 NULL
ㅇ ShowWIndow
BOOL ShowWindow(hWnd, nCmdShow);
- 윈도우를 화면에 보이게 한다.
- hWnd : CreateWindow 함수가 리턴한 핸들을 넘겨줌, 화면에 출력하고자 하는 윈도우의 핸들
- nCmdShow : 윈도우를 화면에 출력 하는 방법
SW_HIDE : 윈도우를 숨긴다.
SW_MINIMIZE : 윈도우를 최소화시키고 활성화시키지 않는다.
SW_RESTORE : 윈도우를 활성화시킨다.
SW_SHOW : 윈도우를 활성화시켜 보여준다.
SW_SHOWNORMAL : 윈도우를 활성화시켜 보여준다
ㅇ 사용 예)
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
ㅇ 윈도우를 만드는 과정
ps : 자세한 내용은 www.WinAPI.co.kr 참고
'[ C/ C++ 프로그래밍 ] > [ WinAPI ]' 카테고리의 다른 글
파일 불러 올때 상대 경로를 설정 방법 (1) | 2010.06.30 |
---|---|
[Windows Api 정복 정리 ] DC(Device ConText) (0) | 2010.06.01 |
[Windows Api 정복 정리 ] 메시지 처리 함수 (WinProc) (1) | 2010.05.31 |
[Windows Api 정복 정리 ] 메시지 루프 (0) | 2010.05.31 |
[Windows Api 정복 정리 ] 기초 (0) | 2010.05.31 |