Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 40, средняя оценка - 4.63
sasho2007
Сообщений: n/a
#1

WM_MOUSEMOVE - C++

31.01.2009, 13:07. Просмотров 4979. Ответов 5
Метки нет (Все метки)

Нужно реализовать перемещение GDI+обекта(Елипса например)по окну с помощю мыши(WM_MOUSEMOVE).
немогу найти достойного примера.Помогите плиз!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2009, 13:07     WM_MOUSEMOVE
Посмотрите здесь:

WM_MOUSEMOVE WinAPI - C++ WinAPI
Помогите создать в окне область из 4х квадратов, передвигаясь монепулятором мыши по которым квадрат будет закрашиваться(используется...

WM_MOUSEMOVE for button - C++ WinAPI
Добрый день. Создал кнопку на которую наложил иконку. Хотелось чтобы при наведении курсора на кнопку она подсвечивалась, т.е. изменялась...

WM_MOUSEMOVE не успевает за мышкой - C++ WinAPI
Добрый день. Пытался написать программу, которая перемещала бы объект квадрат в окне по нажатию мышки. Но у меня почему то квадрат не...

C# и WinApi WM_MOUSEMOVE и WM_MBUTTONDOWN и GetCursorPos() - C#
У меня такой ворос: мне надо получать глобальные координаты + события мыши (если говорить языком WinApi: WM_MOUSEMOVE и WM_MBUTTONDOWN и...

Как изменить местоположение статика в case WM_MOUSEMOVE? - C++ WinAPI
Создаю его так HWND hStatic2; А потом в основном свитче case WM_INITDIALOG: hStatic2 = CreateWindowEx(0,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
31.01.2009, 15:39     WM_MOUSEMOVE #2
на событии wm_mouselbuttondown (или как там, оно называется под виндой, на помню щас вообщем) запоминаешь координаты мыши. Потому обрабатываешь wm_mousemove получаешь новые координаты мыши, высчитываешь смещение и на это смещение передвигаешь свою фигуру.
sasho2007
Сообщений: n/a
31.01.2009, 16:04     WM_MOUSEMOVE #3
Вот код...как ето реализовать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#define UNICODE
#include <windows.h>
#include <gdiplus.h>
using namespace Gdiplus;
 
VOID OnPaint(HDC hdc)
{
  Graphics    graphics(hdc);
   SolidBrush solidBrush(Color(255, 255, 0, 0));
   SolidBrush solidBrush1(Color(100, 0, 0, 255));
   graphics.FillEllipse(&solidBrush, 110, 110, 100, 60);
   graphics.FillRectangle(&solidBrush1, 150, 160, 100, 60);
}
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, INT iCmdShow)
{
   HWND                hWnd;
   MSG                 msg;
   WNDCLASS            wndClass;
   GdiplusStartupInput gdiplusStartupInput;
   ULONG_PTR           gdiplusToken;
   
   // Initialize GDI+.
   GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
   
   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  = TEXT("GettingStarted");
   
   RegisterClass(&wndClass);
   
   hWnd = CreateWindow(
      TEXT("GettingStarted"),   // window class name
      TEXT("Getting Started"),  // 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);
   }
   
   GdiplusShutdown(gdiplusToken);
   return msg.wParam;
}  // WinMain
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, 
   WPARAM wParam, LPARAM lParam)
{
   HDC          hdc;
   PAINTSTRUCT  ps;
   
   switch(message)
   {
   case WM_PAINT:
      hdc = BeginPaint(hWnd, &ps);
      OnPaint(hdc);
      EndPaint(hWnd, &ps);
      return 0;
   case WM_DESTROY:
      PostQuitMessage(0);
      return 0;
   case WM_MOUSEMOVE:
      ??????????????????????????????????????????????????
      return 0;
   default:
      return DefWindowProc(hWnd, message, wParam, lParam);
   }
} // WndProc
sasho2007
Сообщений: n/a
31.01.2009, 16:06     WM_MOUSEMOVE #4
Нужно штоб фигури (graphics.FillEllipse(&solidBrush, 110, 110, 100, 60);
graphics.FillRectangle(&solidBrush1, 150, 160, 100, 60)двигались вместе с мышью при клике и удерживание....
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
31.01.2009, 18:08     WM_MOUSEMOVE #5
А то, что я выше написал не подходит?
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
31.01.2009, 22:43     WM_MOUSEMOVE #6
Код
OnPaint(hdc)
добавь координаты
Yandex
Объявления
31.01.2009, 22:43     WM_MOUSEMOVE
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru