- 음악과 나 -/『 짬 통 』

[스크랩] ♡API♡ API 전체화면 만들기

noon2dy 2006. 4. 18. 18:56
#include <windows.h>


LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPSTR lpszClass="First";

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;

WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_CROSS);

WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=(WNDPROC)WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=NULL;
RegisterClass(&WndClass);

hWnd=CreateWindow(lpszClass,lpszClass,WS_POPUP,
0,0, GetSystemMetricsSM_CXSCREEN),
GetSystemMetrics(SM_CYSCREEN),
NULL,(HMENU)NULL,hInstance,NULL);

ShowWindow(hWnd,nCmdShow);

/*WS_POPUP 는 메뉴바 상태바등등.. 기본 구조 다~ 없애는거에요
0,0은 시작 좌표구요.GetSystemMetricsSM_CXSCREEN) 이건 현제 자기가 쓰고 있는 디스플레이 등록정보의 가로방향 크기,
GetSystemMetrics(SM_CYSCREEN)이건 당연히 세로겠죠.*/

while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;

switch(iMessage) {
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);

SetBkMode(hdc, TRANSPARENT);
SetTextColor(hdc,RGB(100,0,0));

TextOut(hdc, 500,100, "Khg",3);
EndPaint(hWnd, &ps);
return 0;

case WM_KEYDOWN:
switch (wParam) {
case VK_ESCAPE:
PostMessage(hWnd, WM_CLOSE, 0, 0);
return 0L;
}
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));

 
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
메시지의 처리를 위해 콜 백 함수를 선언한다.

typedef struct_WNDCLASSEX {
        UINT        cbSize;
        UINT        style;
        WNDPROC        IpfnWndproc;
        int        cbClsExtra;
        int         cbWndExtra;
        HANDLE         hInstance;
        HICON        hIcon;
        HCURSOR        hCursor;
        HBRUSH        hbrBackground;
        LPCTSTR        IpszMenuName;
        LPCTSTR        IpszClassName;
        HICON        hIconSm;
} WNDCLASSEX;
위 구조체를 이용해서 윈도우의 스타일, 배경, 메뉴, 커서, 아이콘 등등을 지정해 준다.

        
●UINT        cbSize;
구조체의 크기를 지정한다.

●UINT        style;
윈도우의 스타일을 지정한다.

●WNDPROC        IpfnWndproc;
메시지를 처리할 콜 백 함수를 지정한다. 즉 WM_PAINT, WM_CREATE, WM_KEYDOWN 등등의 메시지를
처리할 함수를 지정한다.

●int        cbClsExtra;
추가 클래스를 지정한다.

●int         cbWndExtra;
추가 윈도우를 지정한다.

●HANDLE         hInstance;
인스턴스 핸들을 지정한다.

●HICON        hIcon;
실행 파일에 쓰일 아이콘을 지정한다.

●HCURSOR        hCursor;
윈도우에 쓰일 커서를 지정한다.

●HBRUSH        hbrBackground;
윈도우의 배경 화면을 지정한다.

●LPCTSTR        IpszMenuName;
메뉴를 지정한다.

●LPCTSTR        IpszClassName;
클래스를 지정한다.

●HICON                hIconSm;
윈도우의 캡션에 쓰일 아이콘을 지정한다.




HICON LoadIcon (
        HINSTANCE        hInstance, //handle to application instance
        LPCTSTR                IpIconName // icon-name string or icon resource identifier
);
위 함수는 아이콘을 지정할 때 사용된다.

HINSTANCE        hInstance
인스턴스 핸들을 지정한다.

LPCTSTR                IpIconName
리소스에 등록된 아이콘의 ID를 지정한다. 또는 예약된 아이콘을 지정한다.

◐예약된 아이콘 목록.◑

IDI_APPLICATION                기본적인 프로그램 아이콘

IDI_ASTERISK                알림 아이콘

IDI_EXCLAMATION                느낌표 아이콘

IDI_HAND                         정지 아이콘

IDI_QUESTION                물음표 아이콘




HCURSOR LoadCursor (
        HINSTANCE hInstance, //handle to application instance
        LPCTSTR IpCursorName //name string or cursor resource identifier
);
위 함수는 커서를 지정할때 사용 된다.

●HINSTANCE hInstance
인스턴스 핸들을 지정한다.

●LPCTSTR IpCursorName
리소스에 등록된 커서의 ID를 지정한다. 또는 미리 예약된 커서를 저정한다.





HGDIOBJ GetStockObject(
        int fnObject // type of stock object
);
위 함수는 파라미터의 지정 값에 따라 달라진다. 즉 윈도우즈 배경일 수도 있고,
펜, 폰트 등일 수도 있다.

●int fnObject
미리 예약된 값을 지정한다.

◐예약된 목록.◑
BACK_BRUSH        검은색 브러시

DKGRAY_BRUSH        진한 흰색 브러시, 참고로 CS_VREDRAW와 CS_HREDRAW 클래스
                스타일을 사용한 윈도우에서만사용 되어야 한다.

GRAY_BRUSH        회색 브러시, 참고로 CS_VREDRAW와 CS_HREDRAW 클래스
                스타일을 사용한 윈도우에서만사용 되어야 한다.

HOLLOW_BRUSH        빈 브러시(윈도우의 클라이언트(배경) 영역이 투명해진다.)

LTGRY_BRUSH        여린 회색 브러시, 참고로 CS_VREDRAW와 CS_HREDRAW 클래스
                스타일을 사용한 윈도우에서만사용 되어야 한다.

WHITE_BRUSH        흰색 브러시

BLACK_PEN           검은색 펜

NULL_PEN                 빈 펜

WHITE_PEN           흰색 펜

ANSI_FIXED_FONT                  모든 문자들 사이의 간격이 동일한 윈도우즈 시스템 폰트

ANSI_VAR_FONT                문자들 사이의 간격이 가변적인 윈도우즈 시스템 폰트

DEVICE_DEFAULT_FONT        장치 기본 폰트, 참고로 윈도우즈 NT에서만 적용된다.

OEM_FIXED_FONT                OEM 종속적인 고정 폭 글꼴

SYSTEM_FONT                 시스템 폰트

SYSTEM_FIXED_FONT                 시스템 고정 폰트

DEFAULT_PALETTE                디폴트 팔레트





ATOM RegisterClassEx (
        CONST WNDCLASSEX *Ipwcx //address of structure with class data
);
위 함수는 WNDCLASSEX 구조체에 지정된 값들을 레지스터에 등록한다.

●CONST WNDCLASSEX *Ipwcx
WNDCLASSEX 구조체에 대한 포인터를 지정한다.

 

 

게임그래픽 교육원 대표 홈페이지

(게임그래픽 정규과정 최대 20% 할인제도)

전화문의 : ☎ 02-765-5106

출처 : 게임전문가자격증으로 취업뚫기~!!
글쓴이 : ♡완두콩♡ 원글보기
메모 :

'- 음악과 나 - > 『 짬 통 』' 카테고리의 다른 글

전체화면 만들기.  (0) 2006.04.21
아.... 모르겠다... 닫힌영역 인식해서..  (0) 2006.04.21
음.... 이제 공부는 끝. -_-  (0) 2006.04.18
CMapEditor..  (0) 2006.04.17
4월 17일.. 디다.  (0) 2006.04.17