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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2010, 15:41   #1
OffyGhost
Пользователь
 
Аватар для OffyGhost
 
Регистрация: 09.03.2010
Сообщений: 12
По умолчанию Убегание окна от курсора

Помогите написать)
при попадания курсора на окно, оно убегает)
такая классическая задачка в общем

пока реализовано само окно и кривое определние координат курсора

Код:
#include <windows.h>
 
LONG WINAPI WndProc(HWND, UINT, WPARAM,LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance,
 HINSTANCE hPrevInstance,
 LPSTR lpCmdLine,
 
 int nCmdShow)
{
 HWND hwnd;
 MSG msg;
 WNDCLASS w;
 memset(&w,0,sizeof(WNDCLASS));
 w.style = CS_HREDRAW | CS_VREDRAW;
 w.lpfnWndProc = WndProc;
 w.hInstance = hInstance;
 w.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
 w.lpszClassName = "My Class";
 RegisterClass(&w);
 hwnd = CreateWindow("My Class", "Lab6", WS_OVERLAPPEDWINDOW,
 300, 200, 200, 180, NULL, NULL, hInstance, NULL);
 ShowWindow(hwnd,nCmdShow);
 UpdateWindow(hwnd);
 while(GetMessage(&msg,NULL,0,0))
 {
 TranslateMessage(&msg);
 DispatchMessage(&msg);
 }
 return msg.wParam;
}
 
LONG WINAPI WndProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam)
{
 switch (Message)
 {
 case WM_DESTROY: 
 PostQuitMessage(0);
 break;
 case WM_MOUSEMOVE:
        int x,y;
        x=LOWORD(lparam);
        y=HIWORD(lparam);
        char u[10];
        _itoa_s(x,u,10,10);
        if(u[1]==0)
            u[1]=' ';
        if(u[2]==0)
            u[2]=' ';
        _itoa_s(y,u+4,6,6);
        u[3]='x';
        SetWindowText(hwnd,u);
        break;
 default:
 return DefWindowProc(hwnd, Message, wparam, lparam);
 }
 return 0;
}
OffyGhost вне форума Ответить с цитированием
Старый 20.03.2010, 15:49   #2
nes@
Пользователь
 
Регистрация: 31.10.2009
Сообщений: 25
По умолчанию

могу написать код но только на Delphi
самый умный человек- тот, кто всегда делает то, что нужно...
nes@ вне форума Ответить с цитированием
Старый 20.03.2010, 16:31   #3
OffyGhost
Пользователь
 
Аватар для OffyGhost
 
Регистрация: 09.03.2010
Сообщений: 12
По умолчанию

Код:
MoveWindow(hwnd, rand() % GetSystemMetrics(SM_CXSCREEN) - 200, rand() % GetSystemMetrics(SM_CYSCREEN) - 180, 200, 180, TRUE);
Надо было просто это добавить в case WM_MOUSEMOVE:
OffyGhost вне форума Ответить с цитированием
Старый 20.03.2010, 23:26   #4
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
x=LOWORD(lparam);
y=HIWORD(lparam);
не совсем употребительное определение координат мышки
так удобней и понятней
Код:
p: TPoint;
GetCursorPos(p)
теперь p содержит координаты курсора (p.x, p.y)
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 21.03.2010, 00:20   #5
keef
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 61
По умолчанию

Ещё как вариант если борланд юзать, то делаешь событие на MouseMove, и в нем задаешь рандомные координаты x и y. Тоесть если мышка попадает на форму она быстро убегает )
keef вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Положение курсора Sanek_ntsk Общие вопросы Delphi 6 09.01.2010 11:11
смена курсора у окна с известным handle Oburec Win Api 3 10.07.2009 06:23
Размер окна в зависимости от размера окна Reverent JavaScript, Ajax 1 02.02.2008 15:49
закрыть все дочерни окна, кроме главного окна Worms Общие вопросы Delphi 2 03.12.2007 22:18
Как сделать чтобы дочерние окна в MDI-приложениях были вне главного окна??? dimonchuk Общие вопросы Delphi 1 11.08.2007 12:13