Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2018, 13:40   #1
Максим2214
Новичок
Джуниор
 
Регистрация: 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);
}
Максим2214 вне форума Ответить с цитированием
Старый 23.05.2018, 14:27   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Так проблема в чем? Обычно в школе такие задачки решают: дана точка. определить попала ли она в круг...
p51x вне форума Ответить с цитированием
Старый 24.05.2018, 07:13   #3
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

так у него, скорее всего, проблемы с переводом координат положения формы (верхний левый угол экрана) и координат центра круга, которые считаются относительно уже верхнего левого угла формы.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 24.05.2018, 15:24   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
скорее всего
Нет. У него вообще нет обработки координат. Её нужно с нуля писать.
Black Fregat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[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