Advertisement
Guest User

Untitled

a guest
Aug 29th, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <windows.h>
  2.  
  3. // прототип оконной процедуры, которая занимается обработкой сообщений
  4. LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);
  5.  
  6. TCHAR szClassWindow[] = TEXT("Каркасное приложение");    // имя класса окна
  7.  
  8.                                                         // точка входа в приложение
  9. INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)
  10. {
  11.     // 1. определение класса окна
  12.     WNDCLASSEX wcl;
  13.     wcl.cbSize = sizeof(wcl);   // размер в байтах структуры WNDCLASSEX
  14.                                 // перерисовать всё окно, если изменён размер по горизонтали или по вертикали
  15.     wcl.style = CS_HREDRAW | CS_VREDRAW;    // CS (Class Style) - стиль класса окна (CS_DBLCLKS!)
  16.     wcl.lpfnWndProc = WindowProc;   // адрес оконной процедуры, указатель на функцию WindowProc
  17.     wcl.cbClsExtra = 0;     // используется Windows
  18.     wcl.cbWndExtra = 0;     // используется Windows
  19.     wcl.hInstance = hInst;  // дескриптор данного приложения
  20.  
  21.     wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION);    // загрузка стандартной иконки (посмотреть список иконок!)
  22.  
  23.     wcl.hCursor = LoadCursor(NULL, IDC_ARROW);  // загрузка стандартного курсора (посмотреть список курсоров!)
  24.                                                 // HCURSOR hCursor=LoadCursorFromFile(L"C:\\1.ani");
  25.     wcl.hbrBackground = CreateSolidBrush(RGB(133, 133, 133));
  26.     wcl.lpszMenuName = NULL;    // приложение не содержит меню
  27.     wcl.lpszClassName = szClassWindow;  // имя класса окна
  28.     wcl.hIconSm = NULL; // отсутствие маленькой иконки для связи с классом окна
  29.  
  30.                         // 2. регистрация класса окна
  31.     if (!RegisterClassEx(&wcl))
  32.         return 0; // при неудачной регистрации - выход
  33.  
  34.                   // 3. создание окна
  35.                   // создается окно и переменной hWnd присваивается дескриптор окна
  36.  
  37.     HWND hWnd = CreateWindowEx(
  38.         0,      // расширенный стиль окна (WS_EX_ACCEPTFILES, WS_EX_CLIENTEDGE)
  39.         szClassWindow,  //имя класса окна
  40.         L"city block", // заголовок окна
  41.         WS_OVERLAPPEDWINDOW, // стиль окна (WS_HSCROLL | WS_VSCROLL)
  42.                              // WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,
  43.                              // заголовок, рамка, позволяющая менять размеры, системное меню, кнопки развёртывания и свёртывания окна
  44.         50, 50, 300, 300,
  45.         //CW_USEDEFAULT,    // х-координата левого верхнего угла окна
  46.         //CW_USEDEFAULT,    // y-координата левого верхнего угла окна
  47.         //CW_USEDEFAULT,    // ширина окна
  48.         //CW_USEDEFAULT,    // высота окна
  49.         NULL,           // дескриптор родительского окна (HWND_DESKTOP)
  50.         NULL,           // дескриптор меню окна
  51.         hInst,      // идентификатор приложения, создавшего окно
  52.         NULL);      // указатель на область данных приложения
  53.  
  54.  
  55.                     // 4. отображение окна
  56.     ShowWindow(hWnd, nCmdShow);
  57.     UpdateWindow(hWnd); // перерисовка окна
  58.  
  59.     MSG lpMsg;
  60.     while (GetMessage(&lpMsg, NULL, 0, 0)) // получение очередного сообщения из очереди сообщений (пока не придёт WM_QUIT)
  61.     { // выбирать любые сообщения из любых приложений
  62.         TranslateMessage(&lpMsg);   // трансляция сообщения (потребуется для работы с клавиатурой)
  63.         DispatchMessage(&lpMsg);    // диспетчеризация сообщений
  64.     } // отправка сообщения оконной процедуре
  65.     return lpMsg.wParam;
  66. }
  67.  
  68. // функция вызывается ОС, не программой!
  69. LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
  70. {
  71.     switch (uMessage)
  72.     {
  73.     case WM_PAINT:
  74.     {
  75.         HDC hdc = GetDC(hWnd);
  76.         HBRUSH brush = CreateSolidBrush(RGB(255, 0, 0));
  77.         SelectObject(hdc, brush);
  78.  
  79.         Rectangle(hdc, 0, 0, 70, 70);
  80.         Rectangle(hdc, 0, 70, 85, 180);
  81.         Rectangle(hdc, 0, 180, 75, 300);
  82.  
  83.         Rectangle(hdc, 200, 0, 370, 70);
  84.         Rectangle(hdc, 205, 70, 385, 150);
  85.         Rectangle(hdc, 200, 130, 400, 180);
  86.         Rectangle(hdc, 210, 180, 375, 300);
  87.  
  88.         Rectangle(hdc, 90, 0, 100, 300);
  89.         Rectangle(hdc, 185, 0, 195, 300);
  90.  
  91.         DeleteObject(brush);
  92.         brush = CreateSolidBrush(RGB(200, 200, 0));
  93.         SelectObject(hdc, brush);
  94.         RECT rect{ 100, 100, 250, 150 };
  95.  
  96.         wchar_t building1[] = L"House";
  97.         wchar_t building2[] = L"Hotel";
  98.         wchar_t building3[] = L"bus. Centre";
  99.         wchar_t building4[] = L"house";
  100.         wchar_t building5[] = L"university";
  101.         wchar_t building6[] = L"school";
  102.         wchar_t building7[] = L"Kindergarten";
  103.  
  104.         TextOutW(hdc, 10, 30, building1, wcslen(building1));
  105.         TextOutW(hdc, 3, 120, building3, wcslen(building3));
  106.         TextOutW(hdc, 10, 215, building2, wcslen(building2));
  107.         TextOutW(hdc, 225, 30, building4, wcslen(building4));
  108.         TextOutW(hdc, 210, 90, building5, wcslen(building5));
  109.         TextOutW(hdc, 200, 150, building7, wcslen(building7));
  110.         TextOutW(hdc, 220, 210, building6, wcslen(building6));
  111.  
  112.         DeleteObject(brush);
  113.         return DefWindowProc(hWnd, uMessage, wParam, lParam);
  114.     }
  115.     case WM_DESTROY: // сообщение о завершении программы
  116.         PostQuitMessage(0); // посылка сообщения WM_QUIT
  117.         break;
  118.     default:
  119.         // все сообщения, которые не обрабатываются в данной оконной функции
  120.         // направляются обратно Windows на обработку по умолчанию
  121.         return DefWindowProc(hWnd, uMessage, wParam, lParam);
  122.     }
  123.     return 0;
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement