/////
Search
Duplicate

12/7

<윈도우 프로젝트 내용 정리>
1.
APIENTRY wWinMain(_In_HINSTANCE : Win 메인 함수의 시작
2.
LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING) : 문자열을 초기화
3.
LoadStringW(hInstance, IDC_SYENGINE, szWindowClass, MAX_LOADSTRING); : 변수 입력
4.
MyRegisterClass(hInstance); : MyRegisterClass 함수에 hinstance 변수 입력
5.
ATOM MyRegisterClass(HINSTANCE hInstance) : 선언된 ATOM 클래스로 이동
6.
WNDCLASSEXW wcex : 구조체 정의
7.
wcex.cbSize = sizeof(WNDCLASSEX) : 구조체 크기를 정의
8.
wcex.style = CS_HREDRAW | CS_VREDRAW : 윈도우가 출력되는 형태 정의
9.
wcex.lpfnWndProc = WndProc : 메시지 처리 함수 정의
10.
wcex.cbClsExtra = 0 : 클래스 여분 메모리 크기 정의
11.
wcex.cbWndExtra = 0 : 윈도우 여분 메모리 크기 정의
12.
wcex.hInstance = hInstance;
13.
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SYENGINE)) : 아이콘 정의
14.
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW) : 커서 정의
15.
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1) : 배경색 정의
16.
wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_SYENGINE) : 메뉴 이름 정의
17.
wcex.lpszClassName = szWindowClass : 윈도우 클래스 이름 정의
18.
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)) : 작은 아이콘 등록
19.
return RegisterClassExW(&wcex) : ResisterClassExW함수에 wcex의 값을 입력
20.
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) : : 어플리케이션 인스턴스를 초기화 하는 함수
21.
hInst = hInstance : 어플리케이션 인스턴스 핸들을 전역변수 hinstance에 저장
22.
HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); : 새로운 윈도우 생성, 윈도우 클래스 이름, 제목, 윈도우 스타일 정의
23.
if (!hWnd) { return FALSE; } : 윈도우 생성에 실패했을 경우 FALSE 반환
24.
ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); : 윈도우를 화면에 띄움
return TRUE; } : 성공시 TRUE 반환
25.
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) : 윈도우의 메시지를 처리하는 함수
26.
switch (message) : 전달된 메시지 처리
27.
case WM_COMMAND : 메뉴 선택 버튼 클릭시 처리
28.
int wmId = LOWORD(wParam) : wParam 명령을 wmld에 저장
29.
switch (wmId) : wmld 명령에 따라 실행
30.
case IDM_ABOUT : ABOUT 메뉴 항목이 선택되면 DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; : Dialogbox를 호출하여 ABOUT 대화상자 표시
31.
case IDM_EXIT: Exit메뉴 항목이 선택되면 DestroyWindow(hWnd) : DestroyWindow 호출하여 창을 종료 break;
32.
default: 다른 명령시 return DefWindowProc(hWnd, message, wParam, lParam) : 기본처리
33.
case WM_PAINT : 창을 그림
34.
PAINTSTRUCT ps : 그림 그리기 위한 구조체 선언 HDC hdc = BeginPaint(hWnd, &ps) : 그림 그리고 hdc로 반환
35.
EndPaint(hWnd, &ps) : 그리기 작업 종료
36.
case WM_DESTROY: 창이 닫힐 때 PostQuitMessage(0) : 종료 메시지 추가 break;
37.
default: return DefWindowProc(hWnd, message, wParam, lParam) : 처리 되지 않은 메시지 기본 처리
38.
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) : ABOUT 대화상자 메시지 처리
39.
case WM_INITDIALOG : 초기화 될때 return (INT_PTR)TRUE : TRUE 반환
40.
case WM_COMMAND : 대화상자에서 명령 메시지 처리
41.
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) : OK,혹은 CANCEL을 클릭하면
42.
EndDialog(hDlg, LOWORD(wParam)) : 대화상자 종료
<윈도우 메시지 호출>
1.
왼쪽 버튼을 클릭했을 때 - 알림 메시지
2.
화면 움질일 때 - 에러 메시지
3.
메뉴에서 항목을 선택 할 때 - 알림 메시지
4.
창을 종료할 때 - 확인 메시지
5.
최소화 했다가 복원 했을 때 - 알림 메시지