Document.GetUserClick method
允许用户在文档中单击,并返回 x,y 坐标以及单击时修改器 CTRL、ALT 和 SHIFT 键的状态信息‎

语法

int GetUserClick(out double x, out double y, out int ShiftState, int TimeOut, bool Snap, cdrCursorShape CursorShape);

参数

名称 类型 说明
x double ‎指定选择单击的 x 坐标‎
y double ‎指定选择单击的 y 坐标‎
ShiftState int CtrlShiftAlt 键的状态,没有按下任何一键默认为 0
单击时按下 Shift —->1
单击时按下 Ctrl —->2
单击时按下 Alt —-> 4
单击时按下 Ctrl+Shift —->3
单击时按下 Shift+Alt —->5
单击时按下 Ctrl+Alt —-> 6
单击时按下 Ctrl+Shift + Alt —->7
TimeOut int 指定等待用户单击的时间量(以秒为单位)此参数的默认值为 10
如果设置该值则:直到用户按 Esc 中止该过程
或经过超经过相应的时间间隔才能操作。
Snap bool 指定是否识别捕捉,True or False
CursorShape cdrCursorShape 指定鼠标标的形状

返回

拾取成功返回:0,否则返回:1;Esc退出!

备注

GetUserClick方法允许用户在文档窗口中指定一个点,并将该点的坐标返回给脚本。它还检索有关单击时Ctrl、Shift和Alt键状态的信息。

示例

下面的 VBA 示例检索用户单击的点的坐标,并在该点绘制一个圆。圆圈填充取决于修饰符键状态。如果在用户单击时按下 Shift 键,则应用红色。如果按 Ctrl 键,则添加绿色。如果按 Alt,则应用蓝色。因此,按 Ctrl + Shift + Alt 将生成一个黄色圆圈。该宏将循环,直到用户按 Esc 中止该过程或经过十秒的超时间隔。

  1. Sub Test()
  2. Dim x As Double, y As Double
  3. Dim Shift As Long
  4. Dim b As Boolean
  5. Dim s As Shape
  6. Dim cr As Long, cg As Long, cb As Long
  7. b = False
  8. While Not b
  9. b = ActiveDocument.GetUserClick(x, y, Shift, 10, False, cdrCursorEyeDrop)
  10. If Not b Then
  11. Set s = ActiveLayer.CreateEllipse(x - 0.1, y - 0.1, x + 0.1, y + 0.1)
  12. cr = 0
  13. cg = 0
  14. cb = 0
  15. If (Shift And 1) <> 0 Then cr = 255 ' Shift depressed - Add Red
  16. If (Shift And 2) <> 0 Then cg = 255 ' Ctrl depressed - Add Green
  17. If (Shift And 4) <> 0 Then cb = 255 ' Alt depressed - Add Blue
  18. s.Fill.UniformColor.RGBAssign cr, cg, cb
  19. End If
  20. Wend
  21. End Sub
  1. public void Test()
  2. {
  3. bool b = false;
  4. while (!b)
  5. {
  6. b = capp.ActiveDocument.GetUserClick(out double x, out double y, out int Shift, 10, false, cdrCursorShape.cdrCursorEyeDrop) != 0;
  7. if (!b)
  8. {
  9. Shape s = capp.ActiveLayer.CreateEllipse(x - 0.1, y - 0.1, x + 0.1, y + 0.1);
  10. int cr = 0, cg = 0, cb = 0;
  11. if ((Shift & 1) == 1) cr = 255; //Shift depressed - Add Red
  12. if ((Shift & 2) == 2) cg = 255; //Shift depressed - Add Green
  13. if ((Shift & 4) == 4) cb = 255; //Shift depressed - Add Blue
  14. s.Fill.UniformColor.RGBAssign(cr, cg, cb);
  15. }
  16. }
  17. }