Home » Developing U++ » U++ Developers corner » Using Pen with U++
Re: Using Pen with U++ [message #56571 is a reply to message #56569] |
Fri, 26 March 2021 00:22 |
Tom1
Messages: 1213 Registered: March 2007
|
Senior Contributor |
|
|
OK, here are all the RectTracker changes required:
Add in RectTracker:: in CtrlCore.h:
virtual bool Pen(Point p, const PenInfo& pn, dword keyflags);
Add in LocalLoop.cpp:
bool RectTracker::Pen(Point p, const PenInfo& pn, dword keyflags){
switch(pn.action){
default:
MouseMove(p, keyflags);
break;
case PEN_UP:
LeftUp(p, keyflags);
break;
}
return true;
}
And finally changes in Win32Proc.cpp:
...
static bool pendown=false;
bool GetShift() { return !!(GetKeyStateSafe(VK_SHIFT) & 0x8000); }
bool GetCtrl() { return !!(GetKeyStateSafe(VK_CONTROL) & 0x8000); }
bool GetAlt() { return !!(GetKeyStateSafe(VK_MENU) & 0x8000); }
bool GetCapsLock() { return !!(GetKeyStateSafe(VK_CAPITAL) & 1); }
bool GetMouseLeft() { return pendown || !!(GetKeyStateSafe(VK_LBUTTON) & 0x8000); }
bool GetMouseRight() { return !!(GetKeyStateSafe(VK_RBUTTON) & 0x8000); }
bool GetMouseMiddle() { return !!(GetKeyStateSafe(VK_MBUTTON) & 0x8000); }
bool PassWindowsKey(int wParam);
LRESULT Ctrl::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) {
GuiLock __;
eventid++;
// LLOG("Ctrl::WindowProc(" << message << ") in " << ::Name(this) << ", focus " << (void *)::GetFocus());
Ptr<Ctrl> _this = this;
HWND hwnd = GetHWND();
switch(message) {
case WM_POINTERDOWN:
case WM_POINTERUPDATE:
case WM_POINTERUP: {
pen.action = 0;
pen.pressure = pen.rotation = Null;
pen.tilt = Null;
pen.eraser = pen.barrel = pen.inverted = pen.history = false;
static BOOL (WINAPI *GetPointerType)(UINT32 pointerId, POINTER_INPUT_TYPE *pointerType);
static BOOL (WINAPI *GetPointerInfo)(UINT32 pointerId, POINTER_INFO *pointerInfo);
static BOOL (WINAPI *GetPointerPenInfo)(UINT32 pointerId, POINTER_PEN_INFO *penInfo);
static BOOL (WINAPI *GetPointerPenInfoHistory)(UINT32 pointerId, UINT32 *entriesCount, POINTER_PEN_INFO *penInfo);
ONCELOCK {
DllFn(GetPointerType, "User32.dll", "GetPointerType");
DllFn(GetPointerInfo, "User32.dll", "GetPointerInfo");
DllFn(GetPointerPenInfo, "User32.dll", "GetPointerPenInfo");
DllFn(GetPointerPenInfoHistory, "User32.dll", "GetPointerPenInfoHistory");
};
if(!(GetPointerType && GetPointerInfo && GetPointerPenInfo && GetPointerPenInfoHistory))
break;
POINTER_INPUT_TYPE pointerType;
auto ProcessPenInfo = [&] (POINTER_PEN_INFO& ppi) {
if(ppi.penFlags & PEN_FLAG_BARREL)
pen.barrel = true;
if(ppi.penFlags & PEN_FLAG_INVERTED)
pen.inverted = true;
if(ppi.penFlags & PEN_FLAG_ERASER)
pen.eraser = true;
if(ppi.penMask & PEN_MASK_PRESSURE)
pen.pressure = ppi.pressure / 1024.0;
if(ppi.penMask & PEN_MASK_ROTATION)
pen.rotation = ppi.rotation * M_2PI / 360;
if(ppi.penMask & PEN_MASK_TILT_X)
pen.tilt.x = ppi.tiltX * M_2PI / 360;
if(ppi.penMask & PEN_MASK_TILT_Y)
pen.tilt.y = ppi.tiltY * M_2PI / 360;
};
UINT32 pointerId = GET_POINTERID_WPARAM(wParam);
if(GetPointerType(pointerId, &pointerType) && pointerType == PT_PEN) {
UINT32 hc = 256;
Buffer<POINTER_PEN_INFO> ppit(hc);
if(message == WM_POINTERUPDATE && GetPointerPenInfoHistory(pointerId, &hc, ppit)) {
bool processed = false;
for(int i = hc - 1; i >= 0; i--) {
ProcessPenInfo(ppit[i]);
POINT hp = ppit[i].pointerInfo.ptPixelLocation;
::SetCursorPos(hp.x,hp.y);
::ScreenToClient(hwnd, &hp);
pen.history = (bool)i;
processed = !IsNull(DoMouse(PEN, hp, 0));
}
if(processed)
return 0L;
else
break;
}
POINTER_PEN_INFO ppi;
if(GetPointerPenInfo(pointerId, &ppi))
ProcessPenInfo(ppi);
POINT p = ppi.pointerInfo.ptPixelLocation;
::SetCursorPos(p.x,p.y);
::ScreenToClient(hwnd, &p);
switch(message) {
case WM_POINTERDOWN:
pendown=true;
pen.action = PEN_DOWN;
ClickActivateWnd();
break;
case WM_POINTERUP:
pendown=false;
pen.action = PEN_UP;
break;
}
if(!IsNull(DoMouse(PEN, p, 0)))
return 0L;
break;
}
}
break;
...
The main problem was that ::GetCursorPos() was not working as ::SetCursorPos() was not called from WM_POINTER*. Now it all works and mouse follows pen.
Best regards,
Tom
EDIT: Not quite... calling SetCursorPos() causes incoming WM_MOUSEMOVE messages at some frequency, but the coordinates are obviously old ones causing erratic behavior if both MouseMove and Pen are processed... However, if SetCursorPos() is not called, the mouse position will be different to pen and it will in turn cause flickering RectTracker with intermediate rectangles to mouseposition!
Well, I'm done for today. (or yesterday, or whatever.) Anyway, if you have any ideas how to go around this, please fill in...
[Updated on: Fri, 26 March 2021 01:02] Report message to a moderator
|
|
|
|
|
Using Pen with U++
By: Tom1 on Wed, 03 March 2021 16:13
|
|
|
Re: Using Pen with U++
By: mirek on Wed, 03 March 2021 17:06
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 03 March 2021 20:40
|
|
|
Re: Using Pen with U++
By: mirek on Tue, 09 March 2021 12:04
|
|
|
Re: Using Pen with U++
By: Tom1 on Tue, 09 March 2021 13:10
|
|
|
Re: Using Pen with U++
By: mirek on Tue, 09 March 2021 13:27
|
|
|
Re: Using Pen with U++
By: Tom1 on Tue, 09 March 2021 13:41
|
|
|
Re: Using Pen with U++
By: mirek on Tue, 09 March 2021 13:47
|
|
|
Re: Using Pen with U++
By: Tom1 on Tue, 09 March 2021 13:59
|
|
|
Re: Using Pen with U++
By: Tom1 on Tue, 09 March 2021 14:18
|
|
|
Re: Using Pen with U++
By: mirek on Tue, 09 March 2021 14:37
|
|
|
Re: Using Pen with U++
By: mirek on Tue, 09 March 2021 14:39
|
|
|
Re: Using Pen with U++
By: Tom1 on Tue, 09 March 2021 15:07
|
|
|
Re: Using Pen with U++
By: mirek on Tue, 09 March 2021 15:59
|
|
|
Re: Using Pen with U++
By: Tom1 on Tue, 09 March 2021 16:56
|
|
|
Re: Using Pen with U++
By: mirek on Tue, 09 March 2021 17:48
|
|
|
Re: Using Pen with U++
By: Tom1 on Tue, 09 March 2021 18:14
|
|
|
Re: Using Pen with U++
By: mirek on Thu, 11 March 2021 11:21
|
|
|
Re: Using Pen with U++
By: Tom1 on Thu, 11 March 2021 11:53
|
|
|
Re: Using Pen with U++
By: mirek on Thu, 11 March 2021 14:16
|
|
|
Re: Using Pen with U++
By: Tom1 on Thu, 11 March 2021 14:41
|
|
|
Re: Using Pen with U++
By: Tom1 on Thu, 11 March 2021 14:54
|
|
|
Re: Using Pen with U++
By: Tom1 on Thu, 11 March 2021 16:26
|
|
|
Re: Using Pen with U++
By: mirek on Fri, 12 March 2021 09:37
|
|
|
Re: Using Pen with U++
By: mirek on Fri, 12 March 2021 09:52
|
|
|
Re: Using Pen with U++
By: mirek on Fri, 12 March 2021 10:18
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 12 March 2021 10:28
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 12 March 2021 11:56
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 12 March 2021 12:35
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 12 March 2021 17:50
|
|
|
Re: Using Pen with U++
By: mirek on Fri, 12 March 2021 18:32
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 12 March 2021 19:04
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 12 March 2021 20:27
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 13 March 2021 12:42
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 13 March 2021 14:19
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 13 March 2021 14:39
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 13 March 2021 15:07
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 13 March 2021 15:20
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 13 March 2021 18:02
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 13 March 2021 19:18
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 13 March 2021 20:54
|
|
|
Re: Using Pen with U++
By: mirek on Sun, 14 March 2021 00:05
|
|
|
Re: Using Pen with U++
By: Tom1 on Sun, 14 March 2021 12:14
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 17 March 2021 09:59
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 19 March 2021 09:09
|
|
|
Re: Using Pen with U++
By: mirek on Fri, 19 March 2021 12:57
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 19 March 2021 16:02
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 20 March 2021 11:25
|
|
|
Re: Using Pen with U++
By: Tom1 on Sun, 21 March 2021 12:29
|
|
|
Re: Using Pen with U++
By: mirek on Mon, 22 March 2021 00:39
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 22 March 2021 08:46
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 22 March 2021 10:35
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 22 March 2021 16:17
|
|
|
Re: Using Pen with U++
By: Tom1 on Tue, 23 March 2021 13:36
|
|
|
Re: Using Pen with U++
By: mirek on Wed, 24 March 2021 11:35
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 24 March 2021 11:57
|
|
|
Re: Using Pen with U++
By: mirek on Wed, 24 March 2021 13:31
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 24 March 2021 15:21
|
|
|
Re: Using Pen with U++
By: mirek on Wed, 24 March 2021 15:56
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 24 March 2021 16:51
|
|
|
Re: Using Pen with U++
By: mirek on Wed, 24 March 2021 18:01
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 24 March 2021 18:22
|
|
|
Re: Using Pen with U++
By: mirek on Thu, 25 March 2021 19:58
|
|
|
Re: Using Pen with U++
By: Tom1 on Thu, 25 March 2021 20:47
|
|
|
Re: Using Pen with U++
By: mirek on Thu, 25 March 2021 22:07
|
|
|
Re: Using Pen with U++
By: Tom1 on Thu, 25 March 2021 22:33
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 26 March 2021 00:22
|
|
|
Re: Using Pen with U++
By: Tom1 on Thu, 25 March 2021 22:28
|
|
|
Re: Using Pen with U++
By: mirek on Fri, 26 March 2021 08:57
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 26 March 2021 10:15
|
|
|
Re: Using Pen with U++
By: mirek on Fri, 26 March 2021 12:42
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 26 March 2021 13:39
|
|
|
Re: Using Pen with U++
By: Novo on Fri, 26 March 2021 15:05
|
|
|
Re: Using Pen with U++
By: Novo on Fri, 26 March 2021 15:08
|
|
|
Re: Using Pen with U++
By: mirek on Fri, 26 March 2021 15:45
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 26 March 2021 16:44
|
|
|
Re: Using Pen with U++
By: mirek on Fri, 26 March 2021 18:19
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 26 March 2021 18:52
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 27 March 2021 09:11
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 27 March 2021 12:20
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 27 March 2021 20:23
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 27 March 2021 20:45
|
|
|
Re: Using Pen with U++
By: mirek on Sun, 28 March 2021 13:15
|
|
|
Re: Using Pen with U++
By: Tom1 on Sun, 28 March 2021 18:11
|
|
|
Re: Using Pen with U++
By: mirek on Mon, 29 March 2021 11:10
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 29 March 2021 12:33
|
|
|
Re: Using Pen with U++
By: mirek on Mon, 29 March 2021 13:57
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 29 March 2021 14:36
|
|
|
Re: Using Pen with U++
By: mirek on Mon, 29 March 2021 15:35
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 29 March 2021 15:50
|
|
|
Re: Using Pen with U++
By: mirek on Mon, 29 March 2021 16:01
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 29 March 2021 16:20
|
|
|
Re: Using Pen with U++
By: mirek on Mon, 29 March 2021 16:54
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 29 March 2021 17:04
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 29 March 2021 17:18
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 29 March 2021 17:29
|
|
|
Re: Using Pen with U++
By: mirek on Mon, 29 March 2021 18:17
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 29 March 2021 20:41
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 29 March 2021 22:02
|
|
|
Re: Using Pen with U++
By: mirek on Tue, 30 March 2021 11:21
|
|
|
Re: Using Pen with U++
By: mirek on Tue, 30 March 2021 11:26
|
|
|
Re: Using Pen with U++
By: Tom1 on Tue, 30 March 2021 11:36
|
|
|
Re: Using Pen with U++
By: mirek on Tue, 30 March 2021 12:00
|
|
|
Re: Using Pen with U++
By: Tom1 on Tue, 30 March 2021 12:44
|
|
|
Re: Using Pen with U++
By: Tom1 on Tue, 30 March 2021 15:26
|
|
|
Re: Using Pen with U++
By: Novo on Tue, 30 March 2021 23:34
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 31 March 2021 10:37
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 31 March 2021 13:14
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 31 March 2021 13:46
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 31 March 2021 15:03
|
|
|
Re: Using Pen with U++
By: Tom1 on Thu, 01 April 2021 13:53
|
|
|
Re: Using Pen with U++
By: Tom1 on Thu, 01 April 2021 16:22
|
|
|
Re: Using Pen with U++
By: mirek on Thu, 01 April 2021 17:29
|
|
|
Re: Using Pen with U++
By: Tom1 on Thu, 01 April 2021 18:01
|
|
|
Re: Using Pen with U++
By: mirek on Thu, 01 April 2021 22:46
|
|
|
Re: Using Pen with U++
By: mirek on Thu, 01 April 2021 22:49
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 02 April 2021 08:26
|
|
|
Re: Using Pen with U++
By: mirek on Fri, 02 April 2021 10:05
|
|
|
Re: Using Pen with U++
By: mirek on Fri, 02 April 2021 11:43
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 02 April 2021 12:30
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 02 April 2021 21:27
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 03 April 2021 08:44
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 03 April 2021 08:52
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 03 April 2021 08:57
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 03 April 2021 10:37
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 03 April 2021 11:14
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 03 April 2021 11:37
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 03 April 2021 15:52
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 03 April 2021 16:02
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 03 April 2021 16:05
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 03 April 2021 16:17
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 03 April 2021 17:28
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 03 April 2021 22:57
|
|
|
Re: Using Pen with U++
By: mirek on Sun, 04 April 2021 18:55
|
|
|
Re: Using Pen with U++
By: Tom1 on Sun, 04 April 2021 20:35
|
|
|
Re: Using Pen with U++
By: mirek on Sun, 04 April 2021 20:42
|
|
|
Re: Using Pen with U++
By: Tom1 on Sun, 04 April 2021 22:02
|
|
|
Re: Using Pen with U++
By: mirek on Sun, 04 April 2021 23:15
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 05 April 2021 12:33
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 05 April 2021 12:59
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 07 April 2021 11:04
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 07 April 2021 12:00
|
|
|
Re: Using Pen with U++
By: Tom1 on Thu, 08 April 2021 17:36
|
|
|
Re: Using Pen with U++
By: mirek on Fri, 09 April 2021 09:18
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 09 April 2021 10:00
|
|
|
Re: Using Pen with U++
By: mirek on Fri, 09 April 2021 10:24
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 09 April 2021 17:25
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 09 April 2021 20:15
|
|
|
Re: Using Pen with U++
By: mirek on Mon, 12 April 2021 00:27
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 12 April 2021 09:10
|
|
|
Re: Using Pen with U++
By: mirek on Sun, 25 April 2021 23:20
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 26 April 2021 15:55
|
|
|
Re: Using Pen with U++
By: mirek on Mon, 26 April 2021 16:06
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 26 April 2021 16:33
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 26 April 2021 17:13
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 28 April 2021 12:00
|
|
|
Re: Using Pen with U++
By: mirek on Wed, 28 April 2021 15:42
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 28 April 2021 16:39
|
|
|
Re: Using Pen with U++
By: mirek on Fri, 30 April 2021 07:32
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 30 April 2021 11:08
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 30 April 2021 17:08
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 01 May 2021 10:19
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 01 May 2021 10:16
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 01 May 2021 16:56
|
|
|
Re: Using Pen with U++
By: mirek on Sat, 01 May 2021 17:57
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 01 May 2021 22:56
|
|
|
Re: Using Pen with U++
By: Tom1 on Mon, 03 May 2021 09:18
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 14 May 2021 09:04
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 13 March 2021 21:09
|
|
|
Re: Using Pen with U++
By: Tom1 on Sat, 13 March 2021 15:10
|
|
|
Re: Using Pen with U++
By: Tom1 on Fri, 12 March 2021 10:26
|
|
|
Re: Using Pen with U++
By: mirek on Wed, 02 June 2021 10:53
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 02 June 2021 11:28
|
|
|
Re: Using Pen with U++
By: mirek on Wed, 02 June 2021 11:38
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 02 June 2021 11:40
|
|
|
Re: Using Pen with U++
By: mirek on Wed, 02 June 2021 11:45
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 02 June 2021 12:00
|
|
|
Re: Using Pen with U++
By: Tom1 on Wed, 02 June 2021 12:50
|
|
|
Re: Using Pen with U++
By: mirek on Thu, 03 June 2021 10:05
|
|
|
Re: Using Pen with U++
By: mirek on Thu, 03 June 2021 10:16
|
|
|
Re: Using Pen with U++
By: Tom1 on Thu, 03 June 2021 10:33
|
|
|
Re: Using Pen with U++
By: mirek on Thu, 03 June 2021 11:26
|
Goto Forum:
Current Time: Sun May 12 07:41:16 CEST 2024
Total time taken to generate the page: 0.03050 seconds
|