728x90
반응형
API 수업내용
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst; // 전역변수
LPCTSTR lpszClass=TEXT("First"); // 전역변수 "first"가 창이름으로 들어간다.
LPCTSTR lpszClass=TEXT("First"); // 전역변수 "first"가 창이름으로 들어간다.
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpszCmdParam,int nCmdShow)
// api entry 포인트, main이 아닌 winmain이다
// api entry 포인트, main이 아닌 winmain이다
{
HWND hWnd;
MSG Message;
HWND hWnd;
MSG Message;
WNDCLASS WndClass; //
g_hInst=hInstance;
WndClass.cbClsExtra=0; // 예약영역
WndClass.cbWndExtra=0; // 예약영역
WndClass.hbrBackground=(HBRUSH)GetStockObject(LTGRAY_BRUSH); // 윈도우 배경색상 지정 , 흰색 배경
WndClass.hCursor=LoadCursor(NULL,IDC_CROSS); // 윈도우가 사용할 마우스 커서
//HCURSOR.LoadCursor(HINSTANCE hInstance, LPCTSTR lpCursorName);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION); // 윈도우가 사용할 아이콘
WndClass.hInstance=hInstance; // 클래스를 등록하는 프로그램의 번호
WndClass.lpfnWndProc=WndProc; // 메시지 처리함수를 지정한다 메시지 발생시 멤버가 지정하는 함수가 호출된다.
WndClass.lpszClassName=lpszClass; // 윈도우 클래스 이름을 문자열로 정희한다.
WndClass.lpszMenuName=NULL; // // 프로그램이 사용할 메뉴를 지정한다.
WndClass.style=CS_HREDRAW | CS_VREDRAW; // 윈도우의 수직 수평크기가 변할 경우 윈도우를 다시 그린다는 뜻이다.
RegisterClass(&WndClass); //
WndClass.hInstance=hInstance; // 클래스를 등록하는 프로그램의 번호
WndClass.lpfnWndProc=WndProc; // 메시지 처리함수를 지정한다 메시지 발생시 멤버가 지정하는 함수가 호출된다.
WndClass.lpszClassName=lpszClass; // 윈도우 클래스 이름을 문자열로 정희한다.
WndClass.lpszMenuName=NULL; // // 프로그램이 사용할 메뉴를 지정한다.
WndClass.style=CS_HREDRAW | CS_VREDRAW; // 윈도우의 수직 수평크기가 변할 경우 윈도우를 다시 그린다는 뜻이다.
RegisterClass(&WndClass); //
hWnd=CreateWindow(lpszClass,TEXT("한샘아사랑해"),WS_OVERLAPPEDWINDOW|WS_VSCROLL|WS_HSCROLL,
//100,100,300,200,
100,100,CW_USEDEFAULT,CW_USEDEFAULT,
//CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
// CreateWindow : 등록한 윈도우 설정 함수들의 정보를 메모리에 올려, 메모리에 윈도우 생성함
ShowWindow(hWnd,nCmdShow);
//ShowWindow : 생성된 윈도우를 화면에 보여주는 역할을 함
//100,100,300,200,
100,100,CW_USEDEFAULT,CW_USEDEFAULT,
//CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
// CreateWindow : 등록한 윈도우 설정 함수들의 정보를 메모리에 올려, 메모리에 윈도우 생성함
ShowWindow(hWnd,nCmdShow);
//ShowWindow : 생성된 윈도우를 화면에 보여주는 역할을 함
// while 문쪽과 WndProc 문은 메세지 처리 부분이다.
while (GetMessage(&Message,NULL,0,0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return (int)Message.wParam;
}
// API에서는 WinMain 함수와 WinProc 두 함수가 다 있어야만 하나의 프로그램이 실행 가능하다.
// while문을 통해 OS로부터 오는 메세지를 어떻게 처리할 것인지 판단하는 부분
// WndProc은 사용자와 시스템이 보내오는 메시지를 처리하는 일을 한다.
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch (iMessage)
{
case WM_CREATE: // 처음 만들어질때 발생
return 0;
case WM_LBUTTONDOWN: // 마우스 좌버튼 클릭시 발생
return 0;
case WM_RBUTTONDOWN: //마우스 우버튼 클릭시 발생
return 0;
case WM_KEYDOWN: // 방향키 입력시 발생
return 0;
case WM_CHAR: // 문자 입력시 발생
return 0;
case WM_DESTROY: //사용자가 프로그램을 끝내려고 한다면
PostQuitMessage(0);//이 함수를 호출하여 &message에 fault를 리턴한다.
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
{
switch (iMessage)
{
case WM_CREATE: // 처음 만들어질때 발생
return 0;
case WM_LBUTTONDOWN: // 마우스 좌버튼 클릭시 발생
return 0;
case WM_RBUTTONDOWN: //마우스 우버튼 클릭시 발생
return 0;
case WM_KEYDOWN: // 방향키 입력시 발생
return 0;
case WM_CHAR: // 문자 입력시 발생
return 0;
case WM_DESTROY: //사용자가 프로그램을 끝내려고 한다면
PostQuitMessage(0);//이 함수를 호출하여 &message에 fault를 리턴한다.
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
728x90
'코스웨어 > 10년 시스템제어' 카테고리의 다른 글
2010. 05. 13 김동수(2번) (2) | 2010.05.13 |
---|---|
[시스템제어] 5월 12일 수 (30번 한정희) (1) | 2010.05.13 |
일일보고 순서 ((( 수정 ))) (1) | 2010.05.12 |
시스템제어(10/05/10) - C++(참조전달, 생성자, 소멸자), WinAPI(TextOut, GraphOut, MessageBox) (1) | 2010.05.10 |
도서관리 프로그램 (2) | 2010.05.10 |
[시스템제어] 5월 6일 수업 일지 보고서 - 25번 주강수 (1) | 2010.05.07 |
일일보고 순서 (1) | 2010.05.06 |
[시스템제어] 5월 4일 수업 일지 보고서 - 27번 최영훈 (1) | 2010.05.04 |