Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  TurboCAD
  GetMouse - Problem

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Turbocad
Autor Thema:  GetMouse - Problem (779 mal gelesen)
wega
Mitglied
Dipl.-Ing.


Sehen Sie sich das Profil von wega an!   Senden Sie eine Private Message an wega  Schreiben Sie einen Gästebucheintrag für wega

Beiträge: 426
Registriert: 08.10.2002

Creo Elements/Direct Modeling Express V8 und V4
Windows 7 Professional
Linux Lubuntu 20.1

erstellt am: 10. Mrz. 2005 15:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zuammen,

seit der Version 8.2 funktioniert der Befehl GetMouse... nicht mehr.

Nach etwas suchen in diversen VBA-foren habe ich folgendes gefunden, das auch dann geklappt hat.

1)
'API-Funktion deklarien
Public Declare function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

'Variablentyp deklarieren
Public Type POINTAPI
  X As Long
  Y As Long
End Type

2) der Aufruf
'Variable deklarieren
Dim CursorPos as POINTAPI
'API-Funktion aufrufen
CALL GetCursorPos(CursorPos)

Nun sind in den Variablen:
CursorPos.X und CursorPos.Y
die jeweiligen Koordinaten enthalten.

mit Gruß
Werner

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fcaspar
Mitglied
Konstrukteur


Sehen Sie sich das Profil von fcaspar an!   Senden Sie eine Private Message an fcaspar  Schreiben Sie einen Gästebucheintrag für fcaspar

Beiträge: 347
Registriert: 09.06.2000

erstellt am: 11. Mrz. 2005 13:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für wega 10 Unities + Antwort hilfreich

Hallo Werner,

wie kann man die Funktion dann korrekt in einer Sub-Prozedur verarbeiten?

Z.b. zum Zeichnen von Objekten an einer bestimmten Stelle?
wie sag ich dem Macro, daß es auf eine Mauseingabe warten bzw. reagieren soll?

Ciao Frank

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

wega
Mitglied
Dipl.-Ing.


Sehen Sie sich das Profil von wega an!   Senden Sie eine Private Message an wega  Schreiben Sie einen Gästebucheintrag für wega

Beiträge: 426
Registriert: 08.10.2002

Creo Elements/Direct Modeling Express V8 und V4
Windows 7 Professional
Linux Lubuntu 20.1

erstellt am: 11. Mrz. 2005 14:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Frank,

ich habe das so ins Modul eingebaut:

zu1:
...
...
Public kkNodos1 As Long
Public XX01#, YY01#, ZZ01#

'API-Funktion deklarieren
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Public Type POINTAPI 'Variablentyp deklarieren
    X As Long
    Y As Long
End Type

Public Sub Kopieren_am_Pfad()
  Set App = IMSIGX.Application
  Set ActDr = App.ActiveDrawing
  Set objsel = ActDr.Selection
 
  If ActDr.Properties("TileMode") = 0 Then
      pSpace01 = True
...
...

zu 2)

Function zPick02()
  Dim xClick#, yClick#
  Dim PicRes As PickResult
  Dim PicEnt As PickEntry
  Set App = IMSIGX.Application
  Set ActDr = App.ActiveDrawing
  Set Grs = ActDr.Graphics
  Set Vi = ActDr.ActiveView
  Dim CursorPos As POINTAPI
 
  O_2D = 0
  Err.Clear
  On Error GoTo zPick02_99
  'Vi.GetMouseClick xClick, yClick
  Call GetCursorPos(CursorPos)
  'MsgBox ActDr.ActiveView.ViewHeight & "    " & ActDr.ActiveView.ViewWidth
  'MsgBox ("Cursor X = " & CursorPos.X & " Cursor Y = " & CursorPos.Y)
  pw = (ActDr.ActiveView.ViewHeight + ActDr.ActiveView.ViewWidth) / 1
  'Set PicRes = Vi.PickPoint(xClick, yClick, pw, False, True, True, True, True, False)
  Set PicRes = Vi.PickPoint(CursorPos.X / 1, CursorPos.Y / 1, pw, False, True, True, True, True, False)
  If PicRes.Count > 0 Then
      Set GrSel = PicRes.Item(0).Graphic
...
...

Mit  Call GetCursorPos(CursorPos)
werden die Koordinaten des Mauszeigers beim Drücken der linken Maustaste übernommen.

Wohl habe ich aber festgestellt, das die Bildschirmauflösung eine Rolle spielt.

also so ganz glücklich bin ich mit der Lösung noch nicht. Aber sie funktioniert bei mir.

viele Grüße
Werner

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz