|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.05.2018, 13:40 | #1 |
Новичок
Джуниор
Регистрация: 02.05.2018
Сообщений: 2
|
Создать программу для Windows с использованием только WinAPI которая
Создать программу для Windows с использованием только WinAPI которая 9) Cодержит на рабочей области красный круг, при щелчке мышкой на нем программа закрывается, при нажатии на клавишу Shift круг исчезает;
Нужно чтобы программа закрывалась от щелчка мыши именно на круге, у меня закрывается при нажатии в любой области окна. и чтобы когда программа запускается, круг был в центре и при нажатии "shift" он исчезал. Не могу разобраться( #include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static char szAppName[] = "HelloWin"; HWND hwnd; MSG msg; WNDCLASSEX wndclass; wndclass.cbSize = sizeof(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 = (HBRUSH)GetStockObject(WHITE_BRUSH) ; wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); RegisterClassEx(&wndclass); hwnd = CreateWindow(szAppName, // window class name "The Hello Program", // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position CW_USEDEFAULT, // initial x size CW_USEDEFAULT, // initial y size NULL, // parent window handle NULL, // window menu handle hInstance, // program instance handle NULL); // creation parameters ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; RECT rect; LOGBRUSH lb; static int oldx, oldy; static int f = 0; switch (iMsg) { case WM_CREATE: return 0; case WM_LBUTTONDOWN: PostQuitMessage(0); return 0; case WM_KEYDOWN: switch (wParam) { case VK_SHIFT: f = !f; InvalidateRect(hwnd, 0, TRUE); break; return 0; } case WM_PAINT: if (f) { hdc = BeginPaint(hwnd, &ps); GetClientRect(hwnd, &rect); lb.lbStyle = BS_SOLID; lb.lbColor = RGB(255, 0, 0); lb.lbHatch = 0; SelectObject(hdc, ExtCreatePen(PS_SOLID | PS_GEOMETRIC, 100, &lb, 0, NULL)); Ellipse(hdc, 100, 100, 200, 200); EndPaint(hwnd, &ps); } return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, iMsg, wParam, lParam); } |
23.05.2018, 14:27 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,695
|
Так проблема в чем? Обычно в школе такие задачки решают: дана точка. определить попала ли она в круг...
|
24.05.2018, 07:13 | #3 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,792
|
так у него, скорее всего, проблемы с переводом координат положения формы (верхний левый угол экрана) и координат центра круга, которые считаются относительно уже верхнего левого угла формы.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
|
24.05.2018, 15:24 | #4 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[C++] winAPI, написать программу, которая бы по маске искала файл везде + выводила путь до найденного файла. | sasha7971182 | Помощь студентам | 2 | 13.05.2018 18:15 |
Как в windows создать программу для конспектов? | Фазан | Visual C++ | 1 | 10.12.2017 22:01 |
как создать (написать) программу Firewall для windows???? | Захаров Андрей | Общие вопросы Delphi | 1 | 19.02.2012 17:57 |
Писать Windows Forms приложения можно только через WinApi и MDI? | TwiX | Visual C++ | 4 | 27.09.2011 14:26 |