Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- AboutD2
- AboutD2.cpp
- // AboutD2.cpp: Определяет точку входа для приложения.
- //
- #include "stdafx.h"
- #include "AboutD2.h"
- #define MAX_LOADSTRING 100
- template <class T> void SafeRelease(T **ppT)
- {
- if (*ppT)
- {
- (*ppT)->Release();
- *ppT = NULL;
- }
- }
- // Глобальные переменные:
- HINSTANCE hInst; // текущий экземпляр
- HWND m_hwnd;
- WCHAR szTitle[MAX_LOADSTRING]; // Текст строки заголовка
- WCHAR szWindowClass[MAX_LOADSTRING]; // имя класса главного окна
- int iCurrentColor = IDC_BLACK,
- iCurrentFigure = IDC_RECT;
- const D2D1_COLOR_F crColor[8] = { D2D1::ColorF(0.0f, 0.0f, 0.0f),
- D2D1::ColorF(0.0f, 0.0f, 1.0f),
- D2D1::ColorF(0.0f, 1.0f, 0.0f),
- D2D1::ColorF(0.0f, 1.0f, 1.0f),
- D2D1::ColorF(1.0f, 0.0f, 0.0f),
- D2D1::ColorF(1.0f, 0.0f, 1.0f),
- D2D1::ColorF(1.0f, 1.0f, 0.0f),
- D2D1::ColorF(1.0f, 1.0f, 1.0f)
- };
- // Отправить объявления функций, включенных в этот модуль кода:
- ATOM MyRegisterClass(HINSTANCE hInstance);
- BOOL InitInstance(HINSTANCE, int);
- LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
- INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
- ID2D1Factory *pFactory(nullptr);
- ID2D1HwndRenderTarget *pRenderTarget(nullptr);
- ID2D1SolidColorBrush *pBrush(nullptr);
- D2D1_ELLIPSE ellipse;
- void CalculateLayout(ID2D1HwndRenderTarget *pTarget, D2D1_ELLIPSE& ell);
- HRESULT CreateGraphicsResources(ID2D1HwndRenderTarget **ppTarget, HWND hwnd);
- void OnPaint();
- void Resize();
- void PaintWindow(ID2D1HwndRenderTarget *pTarget, D2D1_ELLIPSE& ell, ID2D1SolidColorBrush **ppBrush,
- int iColor, int iFigure);
- void CalculateLayout(ID2D1HwndRenderTarget *pTarget, D2D1_ELLIPSE& ell)
- {
- if (pTarget != NULL)
- {
- D2D1_SIZE_F size = pTarget->GetSize();
- const float x = size.width / 2;
- const float y = size.height / 2;
- ell = D2D1::Ellipse(D2D1::Point2F(x, y), x, y);
- }
- }
- HRESULT CreateGraphicsResources(ID2D1HwndRenderTarget **ppTarget, HWND hwnd)
- {
- HRESULT hr = S_OK;
- if (*ppTarget == NULL)
- {
- RECT rc;
- GetClientRect(hwnd, &rc);
- D2D1_SIZE_U size = D2D1::SizeU(rc.right, rc.bottom);
- hr = pFactory->CreateHwndRenderTarget(
- D2D1::RenderTargetProperties(),
- D2D1::HwndRenderTargetProperties(hwnd, size),
- ppTarget);
- if (SUCCEEDED(hr))
- {
- CalculateLayout(*ppTarget,ellipse);
- }
- }
- return hr;
- }
- void OnPaint()
- {
- HRESULT hr = CreateGraphicsResources(&pRenderTarget, m_hwnd);
- if (SUCCEEDED(hr))
- {
- PAINTSTRUCT ps;
- BeginPaint(m_hwnd, &ps);
- PaintWindow(pRenderTarget, ellipse, &pBrush, iCurrentColor, iCurrentFigure);
- EndPaint(m_hwnd, &ps);
- }
- }
- void Resize()
- {
- if (pRenderTarget != NULL)
- {
- RECT rc;
- GetClientRect(m_hwnd, &rc);
- D2D1_SIZE_U size = D2D1::SizeU(rc.right, rc.bottom);
- pRenderTarget->Resize(size);
- CalculateLayout(pRenderTarget, ellipse);
- InvalidateRect(m_hwnd, NULL, FALSE);
- }
- }
- int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
- _In_opt_ HINSTANCE hPrevInstance,
- _In_ LPWSTR lpCmdLine,
- _In_ int nCmdShow)
- {
- UNREFERENCED_PARAMETER(hPrevInstance);
- UNREFERENCED_PARAMETER(lpCmdLine);
- // TODO: разместите код здесь.
- // Инициализация глобальных строк
- LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
- LoadStringW(hInstance, IDC_ABOUTD2, szWindowClass, MAX_LOADSTRING);
- MyRegisterClass(hInstance);
- // Выполнить инициализацию приложения:
- if (!InitInstance (hInstance, nCmdShow))
- {
- return FALSE;
- }
- HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_ABOUTD2));
- MSG msg;
- // Цикл основного сообщения:
- while (GetMessage(&msg, nullptr, 0, 0))
- {
- if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
- return (int) msg.wParam;
- }
- //
- // ФУНКЦИЯ: MyRegisterClass()
- //
- // НАЗНАЧЕНИЕ: регистрирует класс окна.
- //
- 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_ABOUTD2));
- wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
- wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
- wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_ABOUTD2);
- wcex.lpszClassName = szWindowClass;
- wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
- return RegisterClassExW(&wcex);
- }
- //
- // ФУНКЦИЯ: InitInstance(HINSTANCE, int)
- //
- // НАЗНАЧЕНИЕ: сохраняет обработку экземпляра и создает главное окно.
- //
- // КОММЕНТАРИИ:
- //
- // В данной функции дескриптор экземпляра сохраняется в глобальной переменной, а также
- // создается и выводится на экран главное окно программы.
- //
- 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;
- }
- m_hwnd = hWnd;
- ShowWindow(hWnd, nCmdShow);
- UpdateWindow(hWnd);
- return TRUE;
- }
- void PaintWindow(ID2D1HwndRenderTarget *pTarget, D2D1_ELLIPSE& ell, ID2D1SolidColorBrush **ppBrush,
- int iColor, int iFigure)
- {
- HRESULT hr;
- pTarget->BeginDraw();
- if (iFigure == IDC_RECT)
- pTarget->Clear(crColor[iColor - IDC_BLACK]);
- else
- {
- hr = pTarget->CreateSolidColorBrush(crColor[iColor - IDC_BLACK], ppBrush);
- if (SUCCEEDED(hr))
- {
- pTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));
- pTarget->FillEllipse(ell, *ppBrush);
- SafeRelease(ppBrush);
- }
- }
- hr = pTarget->EndDraw();
- if (FAILED(hr) || hr == D2DERR_RECREATE_TARGET)
- {
- SafeRelease(&pTarget);
- }
- }
- void PaintTheBlock(HWND hCtrl, ID2D1HwndRenderTarget *pTarget, D2D1_ELLIPSE& ell,
- ID2D1SolidColorBrush **ppBrush, int iColor, int iFigure)
- {
- InvalidateRect(hCtrl, NULL, TRUE);
- UpdateWindow(hCtrl);
- PaintWindow(pTarget, ell, ppBrush, iColor, iFigure);
- }
- LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- static HINSTANCE hInstance;
- switch (message)
- {
- case WM_CREATE:
- hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
- if (FAILED(D2D1CreateFactory(
- D2D1_FACTORY_TYPE_SINGLE_THREADED, &pFactory)))
- {
- return -1; // Неудача CreateWindowEx.
- }
- return 0;
- case WM_COMMAND:
- {
- int wmId = LOWORD(wParam);
- // Разобрать выбор в меню:
- switch (wmId)
- {
- case IDM_ABOUT:
- if (DialogBox(hInstance, TEXT("AboutBox"), hwnd, About))
- InvalidateRect(hwnd, NULL, TRUE);
- break;
- case IDM_EXIT:
- DestroyWindow(hwnd);
- break;
- default:
- return DefWindowProc(hwnd, message, wParam, lParam);
- }
- }
- break;
- case WM_PAINT:
- OnPaint();
- return 0;
- case WM_DESTROY:
- SafeRelease(&pRenderTarget);
- SafeRelease(&pFactory);
- PostQuitMessage(0);
- return 0;
- case WM_SIZE:
- Resize();
- return 0;
- }
- return DefWindowProc(hwnd, message, wParam, lParam);
- }
- // Обработчик сообщений для окна "О программе".
- INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
- {
- HRESULT hr = S_OK;
- static HWND hCtrlBlock;
- static int iColor, iFigure;
- static ID2D1HwndRenderTarget *pBlockTarget(nullptr);
- static ID2D1SolidColorBrush *pb_Brush(nullptr);
- static D2D1_ELLIPSE b_ellipse;
- switch (message)
- {
- case WM_INITDIALOG:
- iColor = iCurrentColor;
- iFigure = iCurrentFigure;
- CheckRadioButton(hDlg, IDC_BLACK, IDC_WHITE, iColor);
- CheckRadioButton(hDlg, IDC_RECT, IDC_ELLIPSE, iFigure);
- hCtrlBlock = GetDlgItem(hDlg, IDC_PAINT);
- RECT rc;
- GetClientRect(hCtrlBlock, &rc);
- D2D1_SIZE_U size = D2D1::SizeU(rc.right, rc.bottom);
- hr = pFactory->CreateHwndRenderTarget(
- D2D1::RenderTargetProperties(),
- D2D1::HwndRenderTargetProperties(hCtrlBlock, size),
- &pBlockTarget);
- if (SUCCEEDED(hr))
- {
- CalculateLayout(pBlockTarget, b_ellipse);
- }
- SetFocus(GetDlgItem(hDlg, iColor));
- return FALSE;
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- case IDOK:
- iCurrentColor = iColor;
- iCurrentFigure = iFigure;
- SafeRelease(&pBlockTarget);
- EndDialog(hDlg, TRUE);
- return TRUE;
- case IDCANCEL:
- SafeRelease(&pBlockTarget);
- EndDialog(hDlg, FALSE);
- return TRUE;
- case IDC_BLACK:
- case IDC_RED:
- case IDC_GREEN:
- case IDC_YELLOW:
- case IDC_BLUE:
- case IDC_MAGENTA:
- case IDC_CYAN:
- case IDC_WHITE:
- iColor = LOWORD(wParam);
- CheckRadioButton(hDlg, IDC_BLACK, IDC_WHITE, LOWORD(wParam));
- PaintTheBlock(hCtrlBlock, pBlockTarget, b_ellipse, &pb_Brush, iColor, iFigure);
- return TRUE;
- case IDC_RECT:
- case IDC_ELLIPSE:
- iFigure = LOWORD(wParam);
- CheckRadioButton(hDlg, IDC_RECT, IDC_ELLIPSE, LOWORD(wParam));
- PaintTheBlock(hCtrlBlock, pBlockTarget, b_ellipse, &pb_Brush, iColor, iFigure);
- return TRUE;
- }
- break;
- case WM_PAINT:
- PaintTheBlock(hCtrlBlock, pBlockTarget, b_ellipse, &pb_Brush, iColor, iFigure);
- break;
- }
- return FALSE;
- }
- AboutD2.rc
- //Скрипт ресурсов, созданный в Microsoft Visual C++.
- //
- #include "resource.h"
- #define APSTUDIO_READONLY_SYMBOLS
- /////////////////////////////////////////////////////////////////////////////
- //
- // Создано из ресурса TEXTINCLUDE 2.
- //
- #ifndef APSTUDIO_INVOKED
- #include "targetver.h"
- #endif
- #define APSTUDIO_HIDDEN_SYMBOLS
- #include "windows.h"
- #undef APSTUDIO_HIDDEN_SYMBOLS
- /////////////////////////////////////////////////////////////////////////////
- #undef APSTUDIO_READONLY_SYMBOLS
- #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
- LANGUAGE 25, 1
- /////////////////////////////////////////////////////////////////////////////
- //
- // Значок
- //
- // Значок с наименьшим значением идентификатора помещается первым, чтобы гарантировать использование
- // идентичного значка приложения для всех систем.
- IDI_ABOUTD2 ICON "About2.ico"
- IDI_SMALL ICON "small.ico"
- /////////////////////////////////////////////////////////////////////////////
- //
- // Меню
- //
- IDC_ABOUTD2 MENU
- BEGIN
- POPUP "&Файл"
- BEGIN
- MENUITEM "В&ыход", IDM_EXIT
- END
- POPUP "&Справка"
- BEGIN
- MENUITEM "&О программе ...", IDM_ABOUT
- END
- END
- /////////////////////////////////////////////////////////////////////////////
- //
- // Сочетание клавиш
- //
- IDC_ABOUTD2 ACCELERATORS
- BEGIN
- "?", IDM_ABOUT, ASCII, ALT
- "/", IDM_ABOUT, ASCII, ALT
- END
- /////////////////////////////////////////////////////////////////////////////
- //
- // Dialog
- //
- ABOUTBOX DIALOG DISCARDABLE 32, 32, 200, 234
- STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
- FONT 8, "MS Sans Serif"
- BEGIN
- ICON "ABOUT2", IDC_STATIC, 7, 7, 20, 20
- CTEXT "AboutD2", IDC_STATIC, 57, 12, 86, 8
- CTEXT "About Box Demo Program", IDC_STATIC, 7, 40, 186, 8
- LTEXT "", IDC_PAINT, 114, 67, 72, 72
- GROUPBOX "&Color", IDC_STATIC, 7, 60, 84, 143
- RADIOBUTTON "&Black", IDC_BLACK, 16, 76, 64, 8, WS_GROUP | WS_TABSTOP
- RADIOBUTTON "B&lue", IDC_BLUE, 16, 92, 64, 8
- RADIOBUTTON "&Green", IDC_GREEN, 16, 108, 64, 8
- RADIOBUTTON "Cya&n", IDC_CYAN, 16, 124, 64, 8
- RADIOBUTTON "&Red", IDC_RED, 16, 140, 64, 8
- RADIOBUTTON "&Magenta", IDC_MAGENTA, 16, 156, 64, 8
- RADIOBUTTON "&Yellow", IDC_YELLOW, 16, 172, 64, 8
- RADIOBUTTON "&White", IDC_WHITE, 16, 188, 64, 8
- GROUPBOX "&Figure", IDC_STATIC, 109, 156, 84, 46, WS_GROUP
- RADIOBUTTON "Rec&tangle", IDC_RECT, 116, 172, 65, 8, WS_GROUP | WS_TABSTOP
- RADIOBUTTON "&Ellipse", IDC_ELLIPSE, 116, 188, 64, 8
- DEFPUSHBUTTON "OK", IDOK, 35, 212, 50, 14, WS_GROUP
- PUSHBUTTON "Cancel", IDCANCEL, 113, 212, 50, 14, WS_GROUP
- END
- /////////////////////////////////////////////////////////////////////////////
- //
- // Icon
- //
- // Icon with lowest ID value placed first to ensure application icon
- // remains consistent on all systems.
- ABOUT2 ICON DISCARDABLE "About2.ico"
- /////////////////////////////////////////////////////////////////////////////
- //
- // DESIGNINFO
- //
- #ifdef APSTUDIO_INVOKED
- GUIDELINES DESIGNINFO
- BEGIN
- IDD_ABOUTBOX, DIALOG
- BEGIN
- LEFTMARGIN, 7
- RIGHTMARGIN, 163
- TOPMARGIN, 7
- BOTTOMMARGIN, 55
- END
- END
- #endif // APSTUDIO_INVOKED
- #ifdef APSTUDIO_INVOKED
- /////////////////////////////////////////////////////////////////////////////
- //
- // TEXTINCLUDE
- //
- 1 TEXTINCLUDE
- BEGIN
- "resource.h\0"
- END
- 2 TEXTINCLUDE
- BEGIN
- "#ifndef APSTUDIO_INVOKED\r\n"
- "#include ""targetver.h""\r\n"
- "#endif\r\n"
- "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
- "#include ""windows.h""\r\n"
- "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
- "\0"
- END
- 3 TEXTINCLUDE
- BEGIN
- "\r\n"
- "\0"
- END
- #endif // APSTUDIO_INVOKED
- /////////////////////////////////////////////////////////////////////////////
- //
- // Таблица строк
- //
- STRINGTABLE
- BEGIN
- IDC_ABOUTD2 "ABOUTD2"
- IDS_APP_TITLE "AboutD2"
- END
- #endif
- /////////////////////////////////////////////////////////////////////////////
- #ifndef APSTUDIO_INVOKED
- /////////////////////////////////////////////////////////////////////////////
- //
- // Создано из ресурса TEXTINCLUDE 3.
- //
- /////////////////////////////////////////////////////////////////////////////
- #endif // не APSTUDIO_INVOKED
- Resource.h
- //{{NO_DEPENDENCIES}}
- // Microsoft Visual C++ generated include file.
- // Используется в файле AboutD2.rc
- //
- #define IDC_BLACK 1000
- #define IDC_BLUE 1001
- #define IDC_GREEN 1002
- #define IDC_CYAN 1003
- #define IDC_RED 1004
- #define IDC_MAGENTA 1005
- #define IDC_YELLOW 1006
- #define IDC_WHITE 1007
- #define IDC_RECT 1008
- #define IDC_ELLIPSE 1009
- #define IDC_PAINT 1010
- #define IDS_APP_TITLE 103
- #define IDR_MAINFRAME 128
- #define IDD_ABOUTD2_DIALOG 102
- #define IDD_ABOUTBOX 103
- #define IDM_ABOUT 104
- #define IDM_EXIT 105
- #define IDI_ABOUTD2 107
- #define IDI_SMALL 108
- #define IDC_ABOUTD2 109
- #define IDC_MYICON 2
- #ifndef IDC_STATIC
- #define IDC_STATIC -1
- #endif
- // Следующие стандартные значения для новых объектов
- //
- #ifdef APSTUDIO_INVOKED
- #ifndef APSTUDIO_READONLY_SYMBOLS
- #define _APS_NO_MFC 130
- #define _APS_NEXT_RESOURCE_VALUE 129
- #define _APS_NEXT_COMMAND_VALUE 32771
- #define _APS_NEXT_CONTROL_VALUE 1000
- #define _APS_NEXT_SYMED_VALUE 110
- #endif
- #endif
- AboutD3
- AboutD3.cpp
- // AboutD3.cpp: Определяет точку входа для приложения.
- //
- #include "stdafx.h"
- #include "AboutD3.h"
- #include "Direct2D.h"
- //#pragma comment(lib, "d2d1")
- //#pragma comment(lib, "DWrite")
- #define MAX_LOADSTRING 100
- // Глобальные переменные:
- HINSTANCE hInst; // текущий экземпляр
- WCHAR szTitle[MAX_LOADSTRING]; // Текст строки заголовка
- WCHAR szWindowClass[MAX_LOADSTRING]; // имя класса главного окна
- Direct2D d2d;
- // Отправить объявления функций, включенных в этот модуль кода:
- ATOM MyRegisterClass(HINSTANCE hInstance);
- BOOL InitInstance(HINSTANCE, int);
- LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
- INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
- LRESULT CALLBACK EllipPushWndProc(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);
- // TODO: разместите код здесь.
- // Инициализация глобальных строк
- LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
- LoadStringW(hInstance, IDC_ABOUTD3, szWindowClass, MAX_LOADSTRING);
- MyRegisterClass(hInstance);
- // Выполнить инициализацию приложения:
- if (!InitInstance (hInstance, nCmdShow))
- {
- return FALSE;
- }
- HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_ABOUTD3));
- MSG msg;
- // Цикл основного сообщения:
- while (GetMessage(&msg, nullptr, 0, 0))
- {
- if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
- return (int) msg.wParam;
- }
- //
- // ФУНКЦИЯ: MyRegisterClass()
- //
- // НАЗНАЧЕНИЕ: регистрирует класс окна.
- //
- 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_ABOUTD3));
- wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
- wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
- wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_ABOUTD3);
- wcex.lpszClassName = szWindowClass;
- wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
- RegisterClassExW(&wcex);
- wcex.style = CS_HREDRAW | CS_VREDRAW;
- wcex.lpfnWndProc = EllipPushWndProc;
- wcex.cbClsExtra = 0;
- wcex.cbWndExtra = 0;
- wcex.hInstance = hInstance;
- wcex.hIcon = NULL;
- wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
- wcex.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
- wcex.lpszMenuName = NULL;
- wcex.lpszClassName = TEXT("EllipPush");
- return RegisterClassExW(&wcex);
- }
- //
- // ФУНКЦИЯ: InitInstance(HINSTANCE, int)
- //
- // НАЗНАЧЕНИЕ: сохраняет обработку экземпляра и создает главное окно.
- //
- // КОММЕНТАРИИ:
- //
- // В данной функции дескриптор экземпляра сохраняется в глобальной переменной, а также
- // создается и выводится на экран главное окно программы.
- //
- 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 Resize(HWND hwnd)
- {
- if (d2d.pRenderTarget != NULL)
- {
- RECT rc;
- GetClientRect(hwnd, &rc);
- D2D1_SIZE_U size = D2D1::SizeU(rc.right, rc.bottom);
- d2d.pRenderTarget->Resize(size);
- d2d.CalculateLayout();
- InvalidateRect(hwnd, NULL, FALSE);
- }
- }
- //
- // ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM)
- //
- // НАЗНАЧЕНИЕ: обрабатывает сообщения в главном окне.
- //
- // WM_COMMAND — обработать меню приложения
- // WM_PAINT — отрисовать главное окно
- // WM_DESTROY — отправить сообщение о выходе и вернуться
- //
- //
- LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- switch (message)
- {
- case WM_CREATE:
- if (!d2d.CreateDeviceIndependentResources())
- {
- return -1; // Неудача CreateWindowEx.
- }
- return 0;
- 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);
- // d2d.OnPaintScene(hWnd);
- EndPaint(hWnd, &ps);
- }
- break;
- case WM_SIZE:
- Resize(hWnd);
- return 0;
- case WM_DESTROY:
- d2d.DiscardGraphicsResources();
- d2d.ReleaseFactory();
- 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;
- }
- LRESULT CALLBACK EllipPushWndProc(HWND hwnd, UINT message,
- WPARAM wParam, LPARAM lParam)
- {
- HDC hdc;
- PAINTSTRUCT ps;
- switch (message)
- {
- case WM_PAINT:
- hdc = BeginPaint(hwnd, &ps);
- d2d.OnPaintScene(hwnd);
- EndPaint(hwnd, &ps);
- return 0;
- case WM_KEYUP:
- if (wParam != VK_SPACE)
- break;
- // fall through
- case WM_LBUTTONUP:
- SendMessage(GetParent(hwnd), WM_COMMAND,
- GetWindowLong(hwnd, GWL_ID), (LPARAM)hwnd);
- return 0;
- }
- return DefWindowProc(hwnd, message, wParam, lParam);
- }
- AboutD3.rc
- //Скрипт ресурсов, созданный в Microsoft Visual C++.
- //
- #include "resource.h"
- #define APSTUDIO_READONLY_SYMBOLS
- /////////////////////////////////////////////////////////////////////////////
- //
- // Создано из ресурса TEXTINCLUDE 2.
- //
- #ifndef APSTUDIO_INVOKED
- #include "targetver.h"
- #endif
- #define APSTUDIO_HIDDEN_SYMBOLS
- #include "windows.h"
- #undef APSTUDIO_HIDDEN_SYMBOLS
- /////////////////////////////////////////////////////////////////////////////
- #undef APSTUDIO_READONLY_SYMBOLS
- #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
- LANGUAGE 25, 1
- /////////////////////////////////////////////////////////////////////////////
- //
- // Значок
- //
- // Значок с наименьшим значением идентификатора помещается первым, чтобы гарантировать использование
- // идентичного значка приложения для всех систем.
- IDI_ABOUTD3 ICON "AboutD3.ico"
- IDI_SMALL ICON "small.ico"
- /////////////////////////////////////////////////////////////////////////////
- //
- // Меню
- //
- IDC_ABOUTD3 MENU
- BEGIN
- POPUP "&Файл"
- BEGIN
- MENUITEM "В&ыход", IDM_EXIT
- END
- POPUP "&Справка"
- BEGIN
- MENUITEM "&О программе ...", IDM_ABOUT
- END
- END
- /////////////////////////////////////////////////////////////////////////////
- //
- // Сочетание клавиш
- //
- IDC_ABOUTD3 ACCELERATORS
- BEGIN
- "?", IDM_ABOUT, ASCII, ALT
- "/", IDM_ABOUT, ASCII, ALT
- END
- /////////////////////////////////////////////////////////////////////////////
- //
- // Диалоговое окно
- //
- IDD_ABOUTBOX DIALOGEX 32, 32, 180, 100
- STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
- CAPTION "О AboutD3"
- FONT 8, "MS Shell Dlg"
- BEGIN
- CONTROL "OK", IDOK, "EllipPush", WS_GROUP | WS_TABSTOP, 73, 79, 32, 14
- ICON "ABOUTD3", IDC_STATIC, 7, 7, 20, 20
- CTEXT "AboutD3", IDC_STATIC, 40, 12, 100, 8
- CTEXT "About Box Demo Program", IDC_STATIC, 7, 40, 166, 8
- CTEXT "(c) Charles Petzold, TSU, 2020", IDC_STATIC, 7, 52, 166, 8
- END
- /////////////////////////////////////////////////////////////////////////////
- //
- // DESIGNINFO
- //
- #ifdef APSTUDIO_INVOKED
- GUIDELINES DESIGNINFO
- BEGIN
- IDD_ABOUTBOX, DIALOG
- BEGIN
- LEFTMARGIN, 7
- RIGHTMARGIN, 163
- TOPMARGIN, 7
- BOTTOMMARGIN, 55
- END
- END
- #endif // APSTUDIO_INVOKED
- #ifdef APSTUDIO_INVOKED
- /////////////////////////////////////////////////////////////////////////////
- //
- // TEXTINCLUDE
- //
- 1 TEXTINCLUDE
- BEGIN
- "resource.h\0"
- END
- 2 TEXTINCLUDE
- BEGIN
- "#ifndef APSTUDIO_INVOKED\r\n"
- "#include ""targetver.h""\r\n"
- "#endif\r\n"
- "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
- "#include ""windows.h""\r\n"
- "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
- "\0"
- END
- 3 TEXTINCLUDE
- BEGIN
- "\r\n"
- "\0"
- END
- #endif // APSTUDIO_INVOKED
- /////////////////////////////////////////////////////////////////////////////
- //
- // Таблица строк
- //
- STRINGTABLE
- BEGIN
- IDC_ABOUTD3 "ABOUTD3"
- IDS_APP_TITLE "AboutD3"
- END
- #endif
- /////////////////////////////////////////////////////////////////////////////
- #ifndef APSTUDIO_INVOKED
- /////////////////////////////////////////////////////////////////////////////
- //
- // Создано из ресурса TEXTINCLUDE 3.
- //
- /////////////////////////////////////////////////////////////////////////////
- #endif // не APSTUDIO_INVOKED
- Colors2
- Colors2.cpp
- /*------------------------------------------------
- COLORS2.C -- Version using Modeless Dialog Box
- ------------------------------------------------*/
- #include <windows.h>
- #include "resource.h"
- LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
- BOOL CALLBACK ColorScrDlg (HWND, UINT, WPARAM, LPARAM) ;
- HWND hDlgModeless ;
- int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
- PSTR szCmdLine, int iCmdShow)
- {
- static TCHAR szAppName[] = TEXT ("Colors2") ;
- HWND hwnd ;
- MSG msg ;
- WNDCLASS wndclass ;
- wndclass.style = CS_HREDRAW | CS_VREDRAW ;
- wndclass.lpfnWndProc = WndProc ;
- wndclass.cbClsExtra = 0 ;
- wndclass.cbWndExtra = 0 ;
- wndclass.hInstance = hInstance ;
- wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
- wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
- wndclass.hbrBackground = CreateSolidBrush (0L) ;
- wndclass.lpszMenuName = NULL ;
- wndclass.lpszClassName = szAppName ;
- RegisterClass (&wndclass);
- hwnd = CreateWindow (szAppName, TEXT ("Color Scroll"),
- WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
- CW_USEDEFAULT, CW_USEDEFAULT,
- CW_USEDEFAULT, CW_USEDEFAULT,
- NULL, NULL, hInstance, NULL) ;
- ShowWindow (hwnd, iCmdShow) ;
- UpdateWindow (hwnd) ;
- hDlgModeless = CreateDialog (hInstance, MAKEINTRESOURCE (IDD_DIALOG1),
- hwnd, ColorScrDlg) ;
- while (GetMessage (&msg, NULL, 0, 0))
- {
- if (hDlgModeless == 0 || !IsDialogMessage (hDlgModeless, &msg))
- {
- TranslateMessage (&msg) ;
- DispatchMessage (&msg) ;
- }
- }
- return msg.wParam ;
- }
- LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- switch (message)
- {
- case WM_DESTROY :
- DeleteObject ((HGDIOBJ) SetClassLong (hwnd, GCL_HBRBACKGROUND,
- (LONG) GetStockObject (WHITE_BRUSH))) ;
- PostQuitMessage (0) ;
- return 0 ;
- }
- return DefWindowProc (hwnd, message, wParam, lParam) ;
- }
- BOOL CALLBACK ColorScrDlg (HWND hDlg, UINT message,
- WPARAM wParam, LPARAM lParam)
- {
- static int iColor[3] ;
- HWND hwndParent, hCtrl ;
- int iCtrlID, iIndex ;
- switch (message)
- {
- case WM_INITDIALOG :
- for (iCtrlID = 10 ; iCtrlID < 13 ; iCtrlID++)
- {
- hCtrl = GetDlgItem (hDlg, iCtrlID) ;
- SetScrollRange (hCtrl, SB_CTL, 0, 255, FALSE) ;
- SetScrollPos (hCtrl, SB_CTL, 0, FALSE) ;
- }
- return TRUE ;
- case WM_VSCROLL :
- hCtrl = (HWND) lParam ;
- iCtrlID = GetWindowLong (hCtrl, GWL_ID) ;
- iIndex = iCtrlID - 10 ;
- hwndParent = GetParent (hDlg) ;
- switch (LOWORD (wParam))
- {
- case SB_PAGEDOWN :
- iColor[iIndex] += 15 ; // fall through
- case SB_LINEDOWN :
- iColor[iIndex] = min (255, iColor[iIndex] + 1) ;
- break ;
- case SB_PAGEUP :
- iColor[iIndex] -= 15 ; // fall through
- case SB_LINEUP :
- iColor[iIndex] = max (0, iColor[iIndex] - 1) ;
- break ;
- case SB_TOP :
- iColor[iIndex] = 0 ;
- break ;
- case SB_BOTTOM :
- iColor[iIndex] = 255 ;
- break ;
- case SB_THUMBPOSITION :
- case SB_THUMBTRACK :
- iColor[iIndex] = HIWORD (wParam) ;
- break ;
- default :
- return FALSE ;
- }
- SetScrollPos (hCtrl, SB_CTL, iColor[iIndex], TRUE) ;
- SetDlgItemInt (hDlg, iCtrlID + 3, iColor[iIndex], FALSE) ;
- DeleteObject ((HGDIOBJ) SetClassLong (hwndParent, GCL_HBRBACKGROUND,
- (LONG) CreateSolidBrush (
- RGB (iColor[0], iColor[1], iColor[2])))) ;
- InvalidateRect (hwndParent, NULL, TRUE) ;
- return TRUE ;
- }
- return FALSE ;
- }
- Colors2.rc
- // Microsoft Visual C++ generated resource script.
- //
- #include "resource.h"
- #define APSTUDIO_READONLY_SYMBOLS
- /////////////////////////////////////////////////////////////////////////////
- //
- // Generated from the TEXTINCLUDE 2 resource.
- //
- #include "winres.h"
- /////////////////////////////////////////////////////////////////////////////
- #undef APSTUDIO_READONLY_SYMBOLS
- /////////////////////////////////////////////////////////////////////////////
- // Русский (Россия) resources
- #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
- LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
- #ifdef APSTUDIO_INVOKED
- /////////////////////////////////////////////////////////////////////////////
- //
- // TEXTINCLUDE
- //
- 1 TEXTINCLUDE
- BEGIN
- "resource.h\0"
- END
- 2 TEXTINCLUDE
- BEGIN
- "#include ""winres.h""\r\n"
- "\0"
- END
- 3 TEXTINCLUDE
- BEGIN
- "\r\n"
- "\0"
- END
- #endif // APSTUDIO_INVOKED
- /////////////////////////////////////////////////////////////////////////////
- //
- // Dialog
- //
- IDD_DIALOG1 DIALOG DISCARDABLE 16, 16, 120, 141
- STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION
- CAPTION "Color Scroll Scrollbars"
- FONT 8, "MS Sans Serif"
- BEGIN
- CTEXT "&Red", IDC_STATIC, 8, 8, 24, 8, NOT WS_GROUP
- SCROLLBAR 10, 8, 20, 24, 100, SBS_VERT | WS_TABSTOP
- CTEXT "0", 13, 8, 124, 24, 8, NOT WS_GROUP
- CTEXT "&Green", IDC_STATIC, 48, 8, 24, 8, NOT WS_GROUP
- SCROLLBAR 11, 48, 20, 24, 100, SBS_VERT | WS_TABSTOP
- CTEXT "0", 14, 48, 124, 24, 8, NOT WS_GROUP
- CTEXT "&Blue", IDC_STATIC, 89, 8, 24, 8, NOT WS_GROUP
- SCROLLBAR 12, 89, 20, 24, 100, SBS_VERT | WS_TABSTOP
- CTEXT "0", 15, 89, 124, 24, 8, NOT WS_GROUP
- END
- /////////////////////////////////////////////////////////////////////////////
- //
- // DESIGNINFO
- //
- #ifdef APSTUDIO_INVOKED
- GUIDELINES DESIGNINFO
- BEGIN
- IDD_DIALOG1, DIALOG
- BEGIN
- LEFTMARGIN, 7
- RIGHTMARGIN, 302
- TOPMARGIN, 7
- BOTTOMMARGIN, 170
- END
- END
- #endif // APSTUDIO_INVOKED
- /////////////////////////////////////////////////////////////////////////////
- //
- // AFX_DIALOG_LAYOUT
- //
- IDD_DIALOG1 AFX_DIALOG_LAYOUT
- BEGIN
- 0
- END
- #endif // Русский (Россия) resources
- /////////////////////////////////////////////////////////////////////////////
- #ifndef APSTUDIO_INVOKED
- /////////////////////////////////////////////////////////////////////////////
- //
- // Generated from the TEXTINCLUDE 3 resource.
- //
- /////////////////////////////////////////////////////////////////////////////
- #endif // not APSTUDIO_INVOKED
- HexCalc
- HexCalc.cpp
- /*----------------------------------------
- HEXCALC.C -- Hexadecimal Calculator
- ----------------------------------------*/
- #include <windows.h>
- LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
- int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
- PSTR szCmdLine, int iCmdShow)
- {
- static TCHAR szAppName[] = TEXT ("HexCalc") ;
- HWND hwnd ;
- MSG msg ;
- WNDCLASS wndclass ;
- wndclass.style = CS_HREDRAW | CS_VREDRAW;
- wndclass.lpfnWndProc = WndProc ;
- wndclass.cbClsExtra = 0 ;
- wndclass.cbWndExtra = DLGWINDOWEXTRA ; // Note!
- wndclass.hInstance = hInstance ;
- wndclass.hIcon = LoadIcon (hInstance, szAppName) ;
- wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
- wndclass.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1) ;
- wndclass.lpszMenuName = NULL ;
- wndclass.lpszClassName = szAppName ;
- RegisterClass (&wndclass);
- hwnd = CreateDialog (hInstance, szAppName, 0, NULL) ;
- ShowWindow (hwnd, iCmdShow) ;
- while (GetMessage (&msg, NULL, 0, 0))
- {
- TranslateMessage (&msg) ;
- DispatchMessage (&msg) ;
- }
- return msg.wParam ;
- }
- void ShowNumber (HWND hwnd, UINT iNumber)
- {
- TCHAR szBuffer[20] ;
- wsprintf (szBuffer, TEXT ("%X"), iNumber) ;
- SetDlgItemText (hwnd, VK_ESCAPE, szBuffer) ;
- }
- DWORD CalcIt (UINT iFirstNum, int iOperation, UINT iNum)
- {
- switch (iOperation)
- {
- case '=': return iNum ;
- case '+': return iFirstNum + iNum ;
- case '-': return iFirstNum - iNum ;
- case '*': return iFirstNum * iNum ;
- case '&': return iFirstNum & iNum ;
- case '|': return iFirstNum | iNum ;
- case '^': return iFirstNum ^ iNum ;
- case '<': return iFirstNum << iNum ;
- case '>': return iFirstNum >> iNum ;
- case '/': return iNum ? iFirstNum / iNum: MAXDWORD ;
- case '%': return iNum ? iFirstNum % iNum: MAXDWORD ;
- default : return 0 ;
- }
- }
- LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- static BOOL bNewNumber = TRUE ;
- static int iOperation = '=' ;
- static UINT iNumber, iFirstNum ;
- HWND hButton ;
- switch (message)
- {
- case WM_KEYDOWN: // left arrow --> backspace
- if (wParam != VK_LEFT)
- break ;
- wParam = VK_BACK ;
- // fall through
- case WM_CHAR:
- if ((wParam = (WPARAM) CharUpper ((TCHAR *) wParam)) == VK_RETURN)
- wParam = '=' ;
- if (hButton = GetDlgItem (hwnd, wParam))
- {
- SendMessage (hButton, BM_SETSTATE, 1, 0) ;
- Sleep (100) ;
- SendMessage (hButton, BM_SETSTATE, 0, 0) ;
- }
- else
- {
- MessageBeep (0) ;
- break ;
- }
- // fall through
- case WM_COMMAND:
- SetFocus (hwnd) ;
- if (LOWORD (wParam) == VK_BACK) // backspace
- ShowNumber (hwnd, iNumber /= 16) ;
- else if (LOWORD (wParam) == VK_ESCAPE) // escape
- ShowNumber (hwnd, iNumber = 0) ;
- else if (isxdigit (LOWORD (wParam))) // hex digit
- {
- if (bNewNumber)
- {
- iFirstNum = iNumber ;
- iNumber = 0 ;
- }
- bNewNumber = FALSE ;
- if (iNumber <= MAXDWORD >> 4)
- ShowNumber (hwnd, iNumber = 16 * iNumber + wParam -
- (isdigit (wParam) ? '0': 'A' - 10)) ;
- else
- MessageBeep (0) ;
- }
- else // operation
- {
- if (!bNewNumber)
- ShowNumber (hwnd, iNumber =
- CalcIt (iFirstNum, iOperation, iNumber)) ;
- bNewNumber = TRUE ;
- iOperation = LOWORD (wParam) ;
- }
- return 0 ;
- case WM_DESTROY:
- PostQuitMessage (0) ;
- return 0 ;
- }
- return DefWindowProc (hwnd, message, wParam, lParam) ;
- }
- HexCalc.dlg
- /*---------------------------
- HEXCALC.DLG dialog script
- ---------------------------*/
- HexCalc DIALOG -1, -1, 102, 122
- STYLE WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
- CLASS "HexCalc"
- CAPTION "Hex Calculator"
- {
- PUSHBUTTON "D", 68, 8, 24, 14, 14
- PUSHBUTTON "A", 65, 8, 40, 14, 14
- PUSHBUTTON "7", 55, 8, 56, 14, 14
- PUSHBUTTON "4", 52, 8, 72, 14, 14
- PUSHBUTTON "1", 49, 8, 88, 14, 14
- PUSHBUTTON "0", 48, 8, 104, 14, 14
- PUSHBUTTON "0", 27, 26, 4, 50, 14
- PUSHBUTTON "E", 69, 26, 24, 14, 14
- PUSHBUTTON "B", 66, 26, 40, 14, 14
- PUSHBUTTON "8", 56, 26, 56, 14, 14
- PUSHBUTTON "5", 53, 26, 72, 14, 14
- PUSHBUTTON "2", 50, 26, 88, 14, 14
- PUSHBUTTON "Back", 8, 26, 104, 32, 14
- PUSHBUTTON "C", 67, 44, 40, 14, 14
- PUSHBUTTON "F", 70, 44, 24, 14, 14
- PUSHBUTTON "9", 57, 44, 56, 14, 14
- PUSHBUTTON "6", 54, 44, 72, 14, 14
- PUSHBUTTON "3", 51, 44, 88, 14, 14
- PUSHBUTTON "+", 43, 62, 24, 14, 14
- PUSHBUTTON "-", 45, 62, 40, 14, 14
- PUSHBUTTON "*", 42, 62, 56, 14, 14
- PUSHBUTTON "/", 47, 62, 72, 14, 14
- PUSHBUTTON "%", 37, 62, 88, 14, 14
- PUSHBUTTON "Equals", 61, 62, 104, 32, 14
- PUSHBUTTON "&&", 38, 80, 24, 14, 14
- PUSHBUTTON "|", 124, 80, 40, 14, 14
- PUSHBUTTON "^", 94, 80, 56, 14, 14
- PUSHBUTTON "<", 60, 80, 72, 14, 14
- PUSHBUTTON ">", 62, 80, 88, 14, 14
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement