Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- // прототип оконной процедуры, которая занимается обработкой сообщений
- LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);
- TCHAR szClassWindow[] = TEXT("Каркасное приложение"); // имя класса окна
- // точка входа в приложение
- INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)
- {
- // 1. определение класса окна
- WNDCLASSEX wcl;
- wcl.cbSize = sizeof(wcl); // размер в байтах структуры WNDCLASSEX
- // перерисовать всё окно, если изменён размер по горизонтали или по вертикали
- wcl.style = CS_HREDRAW | CS_VREDRAW; // CS (Class Style) - стиль класса окна (CS_DBLCLKS!)
- wcl.lpfnWndProc = WindowProc; // адрес оконной процедуры, указатель на функцию WindowProc
- wcl.cbClsExtra = 0; // используется Windows
- wcl.cbWndExtra = 0; // используется Windows
- wcl.hInstance = hInst; // дескриптор данного приложения
- wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION); // загрузка стандартной иконки (посмотреть список иконок!)
- wcl.hCursor = LoadCursor(NULL, IDC_ARROW); // загрузка стандартного курсора (посмотреть список курсоров!)
- // HCURSOR hCursor=LoadCursorFromFile(L"C:\\1.ani");
- wcl.hbrBackground = CreateSolidBrush(RGB(133, 133, 133));
- wcl.lpszMenuName = NULL; // приложение не содержит меню
- wcl.lpszClassName = szClassWindow; // имя класса окна
- wcl.hIconSm = NULL; // отсутствие маленькой иконки для связи с классом окна
- // 2. регистрация класса окна
- if (!RegisterClassEx(&wcl))
- return 0; // при неудачной регистрации - выход
- // 3. создание окна
- // создается окно и переменной hWnd присваивается дескриптор окна
- HWND hWnd = CreateWindowEx(
- 0, // расширенный стиль окна (WS_EX_ACCEPTFILES, WS_EX_CLIENTEDGE)
- szClassWindow, //имя класса окна
- L"city block", // заголовок окна
- WS_OVERLAPPEDWINDOW, // стиль окна (WS_HSCROLL | WS_VSCROLL)
- // WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,
- // заголовок, рамка, позволяющая менять размеры, системное меню, кнопки развёртывания и свёртывания окна
- 50, 50, 300, 300,
- //CW_USEDEFAULT, // х-координата левого верхнего угла окна
- //CW_USEDEFAULT, // y-координата левого верхнего угла окна
- //CW_USEDEFAULT, // ширина окна
- //CW_USEDEFAULT, // высота окна
- NULL, // дескриптор родительского окна (HWND_DESKTOP)
- NULL, // дескриптор меню окна
- hInst, // идентификатор приложения, создавшего окно
- NULL); // указатель на область данных приложения
- // 4. отображение окна
- ShowWindow(hWnd, nCmdShow);
- UpdateWindow(hWnd); // перерисовка окна
- MSG lpMsg;
- while (GetMessage(&lpMsg, NULL, 0, 0)) // получение очередного сообщения из очереди сообщений (пока не придёт WM_QUIT)
- { // выбирать любые сообщения из любых приложений
- TranslateMessage(&lpMsg); // трансляция сообщения (потребуется для работы с клавиатурой)
- DispatchMessage(&lpMsg); // диспетчеризация сообщений
- } // отправка сообщения оконной процедуре
- return lpMsg.wParam;
- }
- // функция вызывается ОС, не программой!
- LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
- {
- switch (uMessage)
- {
- case WM_PAINT:
- {
- HDC hdc = GetDC(hWnd);
- HBRUSH brush = CreateSolidBrush(RGB(255, 0, 0));
- SelectObject(hdc, brush);
- Rectangle(hdc, 0, 0, 70, 70);
- Rectangle(hdc, 0, 70, 85, 180);
- Rectangle(hdc, 0, 180, 75, 300);
- Rectangle(hdc, 200, 0, 370, 70);
- Rectangle(hdc, 205, 70, 385, 150);
- Rectangle(hdc, 200, 130, 400, 180);
- Rectangle(hdc, 210, 180, 375, 300);
- Rectangle(hdc, 90, 0, 100, 300);
- Rectangle(hdc, 185, 0, 195, 300);
- DeleteObject(brush);
- brush = CreateSolidBrush(RGB(200, 200, 0));
- SelectObject(hdc, brush);
- RECT rect{ 100, 100, 250, 150 };
- wchar_t building1[] = L"House";
- wchar_t building2[] = L"Hotel";
- wchar_t building3[] = L"bus. Centre";
- wchar_t building4[] = L"house";
- wchar_t building5[] = L"university";
- wchar_t building6[] = L"school";
- wchar_t building7[] = L"Kindergarten";
- TextOutW(hdc, 10, 30, building1, wcslen(building1));
- TextOutW(hdc, 3, 120, building3, wcslen(building3));
- TextOutW(hdc, 10, 215, building2, wcslen(building2));
- TextOutW(hdc, 225, 30, building4, wcslen(building4));
- TextOutW(hdc, 210, 90, building5, wcslen(building5));
- TextOutW(hdc, 200, 150, building7, wcslen(building7));
- TextOutW(hdc, 220, 210, building6, wcslen(building6));
- DeleteObject(brush);
- return DefWindowProc(hWnd, uMessage, wParam, lParam);
- }
- case WM_DESTROY: // сообщение о завершении программы
- PostQuitMessage(0); // посылка сообщения WM_QUIT
- break;
- default:
- // все сообщения, которые не обрабатываются в данной оконной функции
- // направляются обратно Windows на обработку по умолчанию
- return DefWindowProc(hWnd, uMessage, wParam, lParam);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement