我将使用以下代码在所有窗口上方使用鼠标绘制一条线。我使用鼠标钩子获取鼠标坐标,并在每次右键按下时绘制该线。我使用
初始化:
这段代码适用于Windows 95、98、2000和XP,但在Windows 7上运行非常缓慢。
我用Delphi 3编写了一个鼠标手势程序(1999年编写),仅使用Windows API(由于Delphi 3版本中的错误,鼠标钩子是用VC编写的)。该程序正好做到了StrokeIt所做的事情,但不知何故,StrokeIt设法找到了解决此问题的方法。
我的代码是用Delphi编写的,但任何语言的答案都会受到赞赏!
我将详细说明我要构建的内容。我的应用程序分为三个部分:
1. 在点击右键时跟踪和存储鼠标手势 2. 基于有限数量的形状进行手势识别 3. 基于识别出的手势和启动手势时光标下的应用程序来激活宏
我在Windows7(Vista)上无法使Part1工作,正如Martyn在他的答案中所写,我想我必须改变概念。现在,我通过挂钩鼠标消息进行跟踪,并通过我上面附加的代码进行手势绘制...我理解分层窗口的基础知识,但什么对我有效?您认为制作一个全屏顶部透明窗口并在其上绘制是否能胜任此工作?有人能帮我编写这个代码吗?
NOTXORPEN
,这样我只需再次绘制该线即可删除它。初始化:
ScreenDC := GetDcEx(GetDesktopWindow,0,DCX_LOCKWINDOWUPDATE);
PenHandle := CreatePen(PS_SOLID,HitStorage.GetPenWidth,10);
SelectObject(ScreenDC ,PenHandle);
OldPenMode := SetRop2(ScreenDC, R2_NOTXORPEN); // Setting the PenMode to NotXor
MoveToEx(ScreenDC, X, Y, Nil); //Move The Pen Position to the Cursor Position
我在每次鼠标移动时使用这段代码:
LineTo(ScreenDC, X, Y); // Draw a Line between the prev Point to Current Point
这段代码适用于Windows 95、98、2000和XP,但在Windows 7上运行非常缓慢。
我用Delphi 3编写了一个鼠标手势程序(1999年编写),仅使用Windows API(由于Delphi 3版本中的错误,鼠标钩子是用VC编写的)。该程序正好做到了StrokeIt所做的事情,但不知何故,StrokeIt设法找到了解决此问题的方法。
我的代码是用Delphi编写的,但任何语言的答案都会受到赞赏!
我将详细说明我要构建的内容。我的应用程序分为三个部分:
1. 在点击右键时跟踪和存储鼠标手势 2. 基于有限数量的形状进行手势识别 3. 基于识别出的手势和启动手势时光标下的应用程序来激活宏
我在Windows7(Vista)上无法使Part1工作,正如Martyn在他的答案中所写,我想我必须改变概念。现在,我通过挂钩鼠标消息进行跟踪,并通过我上面附加的代码进行手势绘制...我理解分层窗口的基础知识,但什么对我有效?您认为制作一个全屏顶部透明窗口并在其上绘制是否能胜任此工作?有人能帮我编写这个代码吗?