我使用此代码在所有窗口的顶部用鼠标绘制一条线.我正在使用鼠标钩来获取鼠标坐标,并且在鼠标右键按下时每次鼠标移动我正在画线.我正在使用,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
Run Code Online (Sandbox Code Playgroud)
我在每个鼠标移动中使用此代码:
LineTo(ScreenDC, X, Y); // Draw a Line between the prev Point to Current Point
Run Code Online (Sandbox Code Playgroud)
此代码适用于Windows 95,98,2000和XP,但现在使用Windows 7非常慢.
我在Delphi 3中使用ONLY Windows API编写了一个鼠标手势程序(1999年编写)(由于版本3中的Delphi BUG,鼠标钩子是用VC编写的).这个程序正在完成StrokeIt正在做的事情,但不知何故,StrokeIt设法找出了解决这个问题的方法.
我的代码在Delphi中,但我们将非常感谢您使用任何语言的答案!
我将更详细地解释我正在尝试构建的内容.我的申请分为三个部分:
我无法让Part1在Windows7(Vista)上工作,正如Martyn在他的回答中所写,我想我必须改变概念.现在我通过钩住鼠标消息和上面附带的代码绘制手势来进行跟踪...我理解了分层窗口的基础但是什么对我有用?你认为制作一个全屏最顶层的透明窗口并使用它可以完成这项工作吗?有人可以帮我写这个代码吗?