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: 1212
Registered: March 2007
Senior 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 106 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: Sat May 11 13:46:11 CEST 2024

Total time taken to generate the page: 0.03799 seconds