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

WM_MOUSEMOVE - C++

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

C# и WinApi WM_MOUSEMOVE и WM_MBUTTONDOWN и GetCursorPos() C#
C++ WinAPI WM_MOUSEMOVE WinAPI
C++ WinAPI WM_MOUSEMOVE не успевает за мышкой
C++ WinAPI WM_MOUSEMOVE for button
C++ WinAPI Как изменить местоположение статика в case WM_MOUSEMOVE?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6470 / 2245 / 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
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
31.01.2009, 18:08     WM_MOUSEMOVE #5
А то, что я выше написал не подходит?
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
31.01.2009, 22:43     WM_MOUSEMOVE #6
Код
OnPaint(hdc)
добавь координаты
Yandex
Объявления
31.01.2009, 22:43     WM_MOUSEMOVE
Ответ Создать тему
Опции темы

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