From a738bfb022e87ad2d0d67f6b1f02a92e71e689e9 Mon Sep 17 00:00:00 2001 From: ArBond Date: Thu, 31 Aug 2017 22:09:26 +0300 Subject: [PATCH] hw2_16.08.17 --- hw2_16.08.17/task1/main1.cpp | 106 +++++++++++++++++++++++++++++++++++ hw2_16.08.17/task2/main2.cpp | 47 ++++++++++++++++ 2 files changed, 153 insertions(+) create mode 100644 hw2_16.08.17/task1/main1.cpp create mode 100644 hw2_16.08.17/task2/main2.cpp diff --git a/hw2_16.08.17/task1/main1.cpp b/hw2_16.08.17/task1/main1.cpp new file mode 100644 index 0000000..493fdf1 --- /dev/null +++ b/hw2_16.08.17/task1/main1.cpp @@ -0,0 +1,106 @@ +/* Создайте приложение, в котором будут отображаться четыре окна.Все окна +должны иметь разные заголовки и разный цвет фона. +Измените приложение таким образом, чтобы каждое окно, кроме первого, +появлялось по таймеру. */ + +#include + +#define ID_TIMER1 100 +#define ID_TIMER2 102 +#define ID_TIMER3 103 + +HWND hWnd1; +HWND hWnd2; +HWND hWnd3; +HWND hWnd4; + +LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + switch (uMsg) + { + case WM_CREATE: + SetTimer(hWnd, ID_TIMER1, 1000, NULL); + SetTimer(hWnd, ID_TIMER2, 2000, NULL); + SetTimer(hWnd, ID_TIMER3, 3000, NULL); + break; + case WM_TIMER: + switch(wParam) + { + case ID_TIMER1: + ShowWindow(hWnd2, 1); + KillTimer(hWnd, ID_TIMER1); + break; + case ID_TIMER2: + ShowWindow(hWnd3, 1); + KillTimer(hWnd, ID_TIMER2); + break; + case ID_TIMER3: + ShowWindow(hWnd4, 1); + KillTimer(hWnd, ID_TIMER3); + break; + default: + break; + } + break; + case WM_DESTROY: + PostQuitMessage(0); + break; + default: + return DefWindowProc(hWnd, uMsg, wParam, lParam); + } + return 0; +} + +int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) +{ + WNDCLASSEX wnd1; + WNDCLASSEX wnd2; + WNDCLASSEX wnd3; + WNDCLASSEX wnd4; + + memset(&wnd1, 0, sizeof(wnd1)); + wnd1.cbSize = sizeof(wnd1); + wnd1.lpszClassName = L"Window1"; + wnd1.hbrBackground = CreateSolidBrush(RGB(255, 0, 0)); + wnd1.lpfnWndProc = WndProc; + wnd1.hInstance = hInstance; + + wnd2 = wnd1; + wnd2.lpszClassName = L"Window2"; + wnd2.hbrBackground = CreateSolidBrush(RGB(0, 255, 0)); + + wnd3 = wnd1; + wnd3.lpszClassName = L"Window3"; + wnd3.hbrBackground = CreateSolidBrush(RGB(0, 0, 255)); + + wnd4 = wnd1; + wnd4.lpszClassName = L"Window4"; + wnd4.hbrBackground = CreateSolidBrush(RGB(255, 255, 0)); + + + if (!(RegisterClassEx(&wnd1) && RegisterClassEx(&wnd2) && RegisterClassEx(&wnd3) && RegisterClassEx(&wnd4))) + { + return 1; + } + + hWnd1 = CreateWindowEx(WS_EX_TOPMOST, wnd1.lpszClassName, L"1", WS_OVERLAPPEDWINDOW, 300, 100, 200, 200, NULL, NULL, hInstance, NULL); + hWnd2 = CreateWindowEx(WS_EX_TOPMOST, wnd2.lpszClassName, L"2", WS_OVERLAPPEDWINDOW, 500, 100, 200, 200, NULL, NULL, hInstance, NULL); + hWnd3 = CreateWindowEx(WS_EX_TOPMOST, wnd3.lpszClassName, L"3", WS_OVERLAPPEDWINDOW, 300, 300, 200, 200, NULL, NULL, hInstance, NULL); + hWnd4 = CreateWindowEx(WS_EX_TOPMOST, wnd4.lpszClassName, L"4", WS_OVERLAPPEDWINDOW, 500, 300, 200, 200, NULL, NULL, hInstance, NULL); + + if (!(hWnd1 && hWnd2 && hWnd3 && hWnd1)) + { + return 2; + } + + ShowWindow(hWnd1, 1); + + MSG msg; + while (GetMessage(&msg, NULL, 0, 0)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + return msg.wParam; +} \ No newline at end of file diff --git a/hw2_16.08.17/task2/main2.cpp b/hw2_16.08.17/task2/main2.cpp new file mode 100644 index 0000000..03b5597 --- /dev/null +++ b/hw2_16.08.17/task2/main2.cpp @@ -0,0 +1,47 @@ +/* Напишите приложение, которое «угадывает» задуманное пользователем число +от 1 до 100. Для запроса к пользователю используйте окна сообщений.Оформите их +подходящим образом. */ + +#include +#include + +int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) +{ + if (MessageBox(NULL, L"Загадай число от 1 до 100 и я его угадаю!", L"Угадайка", MB_OKCANCEL) == IDOK) + { + srand(time(0)); + wchar_t buff[50]; + int botBorder = 1; + int topBorder = 99; + int count = 0; + int number; + int preBorder; + int id; + + while(topBorder != 0) + { + number = botBorder + rand() % topBorder; + count++; + wsprintf(buff, L"Это число больше %i ?", number); + id = MessageBox(NULL, buff, L"Угадайка", MB_YESNOCANCEL); + if (id == IDYES) + { + preBorder = botBorder; + botBorder = number + 1; + topBorder -= botBorder - preBorder; + + } + else if (id == IDNO) + { + topBorder = number - botBorder; + } + else + { + return 0; + } + } + wsprintf(buff, L"Это число %i!\nЯ Угадал за %i попыток =)", botBorder, count); + MessageBox(NULL, buff, L"Угадайка", MB_OK); + } + return 0; +} \ No newline at end of file