일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 오픈지엘
- 윈도우
- Geometry Modeling
- 윈도우프로그래밍
- 컴퓨터 구조
- Mesh Processing
- shader
- 셰이더프로그래밍
- win32
- 윈도우 구조
- shader programming
- 윈도우 프로그래밍
- 렌더링
- 컴퓨터 아키텍쳐
- Win32 API
- 셰이더
- 운영체제
- modeling
- denoising
- Graphics
- c4d
- MFC
- 그래픽스
- bezier curve
- OpenGL
- 핵심 API로 배우는 윈도우프로그래밍
- window programming
- 그래픽스기초
- MFC 윈도우 프로그래밍
- 베지에 곡선
Archives
- Today
- Total
오다기리 박의 알고리즘 노트
[핵심 API로 배우는 윈도우프로그래밍(강경우, 한빛아카데미)] 7장 2번 풀이 본문
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | #include <Windows.h> #include<tchar.h> #include<string.h> #include<math.h> #include"resource.h" //#pragma comment(linker,"/entry:WinMainCRTStartup /subsystem:console") LRESULT CALLBACK FrameWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK ChildWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam); HINSTANCE hInst; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { HWND hwnd; MSG msg; WNDCLASS WndClass; hInst = hInstance; WndClass.style = CS_HREDRAW | CS_VREDRAW; WndClass.lpfnWndProc = FrameWndProc; WndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; WndClass.hInstance = hInstance; WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); WndClass.lpszMenuName = MAKEINTRESOURCE(IDR_MENU2); WndClass.lpszClassName = _T("Window Class Name"); RegisterClass(&WndClass); WndClass.lpfnWndProc = ChildWndProc; WndClass.lpszMenuName = NULL; WndClass.lpszClassName = _T("Child Window Class Name"); RegisterClass(&WndClass); hwnd = CreateWindow( _T("Window Class Name"), _T("Main Window Title"), WS_OVERLAPPEDWINDOW, 50, 50, 1000, 700, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int)msg.wParam; } LRESULT CALLBACK FrameWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { static HWND hwndClient; HWND hwndChild; CLIENTCREATESTRUCT clientcreate; MDICREATESTRUCT mdicreate; OPENFILENAME OFN; TCHAR filter[] = _T("Every File(*.*)\0*.*\0Text File\0*.txt;*.doc\0"); TCHAR lpstrFile[100] = _T(""); TCHAR str[100]; switch (iMsg) { case WM_CREATE: clientcreate.hWindowMenu = GetSubMenu(GetMenu(hwnd), 0); clientcreate.idFirstChild = 100; hwndClient = CreateWindow(_T("MDICLIENT"), NULL, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN, 0, 0, 0, 0, hwnd, NULL, hInst, (LPSTR)&clientcreate); ShowWindow(hwndClient, SW_SHOW); break; case WM_COMMAND: switch (LOWORD(wParam)) { case ID_FILENEW: mdicreate.szClass = _T("Child Window Class Name"); mdicreate.szTitle = _T("NoName"); mdicreate.hOwner = hInst; mdicreate.style = 0; mdicreate.lParam = 0; mdicreate.x = CW_USEDEFAULT; mdicreate.y = CW_USEDEFAULT; mdicreate.cx = CW_USEDEFAULT; mdicreate.cy = CW_USEDEFAULT; hwndChild = (HWND)SendMessage(hwndClient, WM_MDICREATE, 0, (LPARAM)(LPMDICREATESTRUCT)&mdicreate); break; case ID_FILEOPEN: memset(&OFN, 0, sizeof(OPENFILENAME)); OFN.lStructSize = sizeof(OPENFILENAME); OFN.hwndOwner = hwnd; OFN.lpstrFilter = filter; OFN.lpstrFile = lpstrFile; OFN.nMaxFile = 256; OFN.lpstrInitialDir = _T("."); if (GetOpenFileName(&OFN) != 0) { _stprintf_s(str, 100, _T("%s를 여시겠습니까"),OFN.lpstrFile); MessageBox(hwnd, str, _T("파일열기"), MB_OK); } mdicreate.szClass = _T("Child Window Class Name"); mdicreate.szTitle = OFN.lpstrFile; mdicreate.hOwner = hInst; mdicreate.style = 0; mdicreate.lParam = 0; mdicreate.x = CW_USEDEFAULT; mdicreate.y = CW_USEDEFAULT; mdicreate.cx = CW_USEDEFAULT; mdicreate.cy = CW_USEDEFAULT; hwndChild = (HWND)SendMessage(hwndClient, WM_MDICREATE, 0, (LPARAM)(LPMDICREATESTRUCT)&mdicreate); break; } break; case WM_DESTROY: PostQuitMessage(0); break; } return DefFrameProc(hwnd, hwndClient, iMsg, wParam, lParam); } LRESULT CALLBACK ChildWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { switch (iMsg) { case WM_CREATE: break; case WM_DESTROY: PostQuitMessage(0); break; } return DefMDIChildProc(hwnd, iMsg, wParam, lParam); } | cs |
'WIN32 API' 카테고리의 다른 글
[핵심 API로 배우는 윈도우프로그래밍(강경우, 한빛아카데미)] 7장 4번 풀이 (0) | 2017.11.03 |
---|---|
[핵심 API로 배우는 윈도우프로그래밍(강경우, 한빛아카데미)] 7장 3번 풀이 (0) | 2017.11.03 |
[핵심 API로 배우는 윈도우프로그래밍(강경우, 한빛아카데미)] 7장 1번 풀이 (0) | 2017.11.03 |
[핵심 API로 배우는 윈도우프로그래밍(강경우, 한빛아카데미)] 6장 12번 풀이 (0) | 2017.11.03 |
[핵심 API로 배우는 윈도우프로그래밍(강경우, 한빛아카데미)] 6장 11번 풀이 (0) | 2017.11.03 |