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 #56573 is a reply to message #56568] Fri, 26 March 2021 08:57 Go to previous messageGo to previous message
mirek is currently offline  mirek
Messages: 13976
Registered: November 2005
Ultimate Member
Tom1 wrote on Thu, 25 March 2021 22:28
Mirek,

Is pn.action intentionally merely a state flag showing continuously PEN_UP or PEN_DOWN? Or should we reset it along with other PenInfo items in the beginning of processing WM_POINTER* messages?

I would like to have it reset, in order to more easily detect UP/DOWN state changes without a state variable and treat zero action as 'PEN_MOVE'.

Then we could do this to decode all kinds of pen events:

#define PENMOVE		0
#define PENDOWN		1
#define PENUP		2
#define PENHOLD		3
#define PENDRAG		4
#define PENDOUBLE	5
#define PENTRIPLE	6

bool IsNear(Point p, Point o){
	Point delta(p-o);
	if(abs(delta.x)<5 && abs(delta.y)<5) return true;
	return false;
}
	
int PenDecoder(Point p, const PenInfo& pn, dword keyflags){
	static int action=0;
	static int downt=0;
	static Point downp=Null;
	static bool doubleClick=true;
	static bool down=false;
	static bool solved=false;
	int now=msecs();
	int deltat=now-downt;
	
	
	bool isNear=IsNear(p,downp);
	
	switch(pn.action){
		case PEN_DOWN:
			down=true;
			solved=false;
			downp=p;
			downt=now;
			if(isNear){
				if(now-downt < 500){
					if(doubleClick){
						return PENTRIPLE;
					}
					else{
						doubleClick=true;
						return PENDOUBLE;
					}
				}
			}
			doubleClick=false;
			return PENDOWN;

		case PEN_UP:
			down=false;
			return PENUP;

		default:
			if(down && !solved){
				if(isNear){
					if(now-downt > 1000){
						solved=true;
						return PENHOLD;
					}
				}
				else{
					solved=true;
					return PENDRAG;
				}
			}
			return PENMOVE;
	}
}


Best regards,

Tom


Would it solve any real problem? I mean, I believe that the application can do all these on its own, if it needs to.
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
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: Sun May 12 00:01:06 CEST 2024

Total time taken to generate the page: 0.03021 seconds