Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Developing U++ » U++ Developers corner » Using Pen with U++
Re: Using Pen with U++ [message #56637 is a reply to message #56635] Tue, 30 March 2021 15:26 Go to previous messageGo to previous message
Tom1
Messages: 1303
Registered: March 2007
Ultimate Contributor
Hi Mirek,

The following changes would add Pen support to RectTracker (and the inherited Sketcher).

Add to RectTracker in CtrlCore.h:

public:
	virtual bool  Pen(Point p, const PenInfo &pn, dword keyflags);
	virtual void  DoMouseMove(Point p, dword);

protected:
	int				pointer;


Changes in LocalLoop.cpp:
RectTracker::RectTracker(Ctrl& master)
{
	pointer=Null; // << ADD THIS IN CONSTRUCTOR

...

bool  RectTracker::Pen(Point p, const PenInfo &pn, dword keyflags){ // ADD Pen() here
	if(IsNull(pointer)) pointer=1;
	if(pointer!=1) return false;

	switch(pn.action){
		case 0:
			DoMouseMove(p, keyflags);
			break;
		case PEN_DOWN:
			LeftDown(p, keyflags);
			break;
		case PEN_UP:
			LeftUp(p, keyflags);
			break;
	}
	return true;
}

void RectTracker::MouseMove(Point mp, dword){ // ADD NEW MouseMove here
	if(IsNull(pointer)) pointer=2;
	if(pointer!=2) return;
	DoMouseMove(mp,0);
}

void RectTracker::DoMouseMove(Point mp, dword) // RENAMED ORIGINAL MouseMove to DoMouseMove
{

... THIS IS THE ORIGINAL MouseMove() code here ...


Changes in Win32Proc.cpp:
static bool pendown=false; // ADD
bool GetMouseLeft()   { return pendown || !!(GetKeyStateSafe(VK_LBUTTON) & 0x8000); } // ADD 'pendown ||' here

...

				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;
						CurrentMousePos =  hp; // << ADD UPDATING HERE
						ScreenToClient(hwnd, &hp);
						pen.history = (bool)i;
						processed = DoPen(hp);
					}

...

				switch(message) {
				case WM_POINTERDOWN:
					pendown=true; // << ADD set pendown here
					pen.action = PEN_DOWN;
					ClickActivateWnd();
					break;
				case WM_POINTERUP:
					pendown=false; // << ADD set pendown here
					pen.action = PEN_UP;
					break;
				}



The updated testcase including modified Sketcher is attached in main2.cpp.

Would this be acceptable, or do you have a more elegant solution?

Best regards,

Tom
  • Attachment: main2.cpp
    (Size: 5.27KB, Downloaded 162 times)
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: WString vs Grapheme Cluster idea (with possible flaw)
Next Topic: .gitignore
Goto Forum:
  


Current Time: Thu Jul 03 03:25:52 CEST 2025

Total time taken to generate the page: 0.04557 seconds