Created
November 9, 2018 08:30
-
-
Save dertst/4b9eb2159e56b2a033545300a954c33c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "stdafx.h" | |
#include "WindowsProject2.h" | |
#define MAX_LOADSTRING 100 | |
HINSTANCE hInst; | |
WCHAR szTitle[MAX_LOADSTRING]; | |
WCHAR szWindowClass[MAX_LOADSTRING]; | |
ATOM MyRegisterClass(HINSTANCE hInstance); | |
BOOL InitInstance(HINSTANCE, int); | |
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); | |
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); | |
int APIENTRY wWinMain(_In_ HINSTANCE hInstance, | |
_In_opt_ HINSTANCE hPrevInstance, | |
_In_ LPWSTR lpCmdLine, | |
_In_ int nCmdShow) | |
{ | |
UNREFERENCED_PARAMETER(hPrevInstance); | |
UNREFERENCED_PARAMETER(lpCmdLine); | |
LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); | |
LoadStringW(hInstance, IDC_WINDOWSPROJECT2, szWindowClass, MAX_LOADSTRING); | |
MyRegisterClass(hInstance); | |
if (!InitInstance (hInstance, nCmdShow)) | |
{ | |
return FALSE; | |
} | |
HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT2)); | |
MSG msg; | |
while (GetMessage(&msg, nullptr, 0, 0)) | |
{ | |
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) | |
{ | |
TranslateMessage(&msg); | |
DispatchMessage(&msg); | |
} | |
} | |
return (int) msg.wParam; | |
} | |
ATOM MyRegisterClass(HINSTANCE hInstance) | |
{ | |
WNDCLASSEXW wcex; | |
wcex.cbSize = sizeof(WNDCLASSEX); | |
wcex.style = CS_HREDRAW | CS_VREDRAW; | |
wcex.lpfnWndProc = WndProc; | |
wcex.cbClsExtra = 0; | |
wcex.cbWndExtra = 0; | |
wcex.hInstance = hInstance; | |
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT2)); | |
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); | |
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); | |
wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT2); | |
wcex.lpszClassName = szWindowClass; | |
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); | |
return RegisterClassExW(&wcex); | |
} | |
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) | |
{ | |
hInst = hInstance; | |
HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, | |
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); | |
if (!hWnd) | |
{ | |
return FALSE; | |
} | |
ShowWindow(hWnd, nCmdShow); | |
UpdateWindow(hWnd); | |
return TRUE; | |
} | |
void FourEnd(HDC hdc, int x, int y, int size) | |
{ | |
MoveToEx(hdc, x, y - size, NULL); | |
LineTo(hdc, x + size / 4, y - size / 4); | |
LineTo(hdc, x + size, y); | |
LineTo(hdc, x + size / 4, y + size / 4); | |
LineTo(hdc, x, y + size); | |
LineTo(hdc, x - size / 4, y + size / 4); | |
LineTo(hdc, x - size, y); | |
LineTo(hdc, x - size / 4, y - size / 4); | |
LineTo(hdc, x, y - size); | |
} | |
void RecursiveFourEnd(HDC hdc, int x, int y, int size) | |
{ | |
FourEnd(hdc, 5000, 5000, 128); | |
if (size == 16) | |
{ | |
return; | |
} | |
RecursiveFifeEnd(hdc, x, y - size, size / 2); | |
RecursiveFifeEnd(hdc, x - size, y, size / 2); | |
RecursiveFifeEnd(hdc, x, y + size, size / 2); | |
RecursiveFifeEnd(hdc, x + size, y, size / 2); | |
} | |
void FifeEnd(HDC hdc, int x, int y, int size) | |
{ | |
MoveToEx(hdc, x, y - size, NULL); | |
LineTo(hdc, x + size / 4, y); | |
LineTo(hdc, x + size, y); | |
LineTo(hdc, x + size / 4, y + size / 4); | |
LineTo(hdc, x + size, y + size); | |
LineTo(hdc, x, y + size / 2); | |
LineTo(hdc, x - size, y + size); | |
LineTo(hdc, x - size / 4, y + size / 4); | |
LineTo(hdc, x - size, y); | |
LineTo(hdc, x - size / 4, y); | |
LineTo(hdc, x, y - size); | |
} | |
void RecursiveFifeEnd(HDC hdc, int x, int y, int size) | |
{ | |
FifeEnd(hdc, x, y, size); | |
if (size == 16) | |
{ | |
return; | |
} | |
RecursiveFourEnd(hdc, x, y - size, size / 2); | |
RecursiveFourEnd(hdc, x + size, y, size / 2); | |
RecursiveFourEnd(hdc, x - size, y, size / 2); | |
RecursiveFourEnd(hdc, x - size, y + size, size / 2); | |
RecursiveFourEnd(hdc, x + size, y + size, size / 2); | |
} | |
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) | |
{ | |
switch (message) | |
{ | |
case WM_COMMAND: | |
{ | |
int wmId = LOWORD(wParam); | |
switch (wmId) | |
{ | |
case IDM_ABOUT: | |
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); | |
break; | |
case IDM_EXIT: | |
DestroyWindow(hWnd); | |
break; | |
default: | |
return DefWindowProc(hWnd, message, wParam, lParam); | |
} | |
} | |
break; | |
case WM_PAINT: | |
{ | |
PAINTSTRUCT ps; | |
HDC hdc = BeginPaint(hWnd, &ps); | |
RecursiveFifeEnd(hdc, 500, 230, 128); | |
EndPaint(hWnd, &ps); | |
} | |
break; | |
case WM_DESTROY: | |
PostQuitMessage(0); | |
break; | |
default: | |
return DefWindowProc(hWnd, message, wParam, lParam); | |
} | |
return 0; | |
} | |
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) | |
{ | |
UNREFERENCED_PARAMETER(lParam); | |
switch (message) | |
{ | |
case WM_INITDIALOG: | |
return (INT_PTR)TRUE; | |
case WM_COMMAND: | |
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) | |
{ | |
EndDialog(hDlg, LOWORD(wParam)); | |
return (INT_PTR)TRUE; | |
} | |
break; | |
} | |
return (INT_PTR)FALSE; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment