Automatische Cursor Positionierung bei IDE templates?

Anfängerfragen zum Programmieren mit PureBasic.
MikeHart
Beiträge: 14
Registriert: 05.09.2017 12:19
Wohnort: Leverkusen

Automatische Cursor Positionierung bei IDE templates?

Beitrag von MikeHart »

Hallo zusammen,

Nachdem die PB Hilfe und Forumsuche mich nicht weitergebracht hat, hier meine Frage.

Bei diesen IDE templates die man selbst definieren kann, gibt es dort eine Zeichenkombination oder ein Zeichen welches (platziert im Template) die IDE anweist, nach dem Insert des Templates im Code den Cursor an eine definierte Stelle zu platzieren?
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Automatische Cursor Positionierung bei IDE templates?

Beitrag von Sicro »

Nein, leider nicht.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
GlassJoe
Beiträge: 108
Registriert: 11.06.2017 20:25
Computerausstattung: 2 x AMD Phenom II x4 945,2x Dell Latitude X300, Dell Latitude D410, Hp Compaq NC4400

Re: Automatische Cursor Positionierung bei IDE templates?

Beitrag von GlassJoe »

hmm soweit ich das verstanden hab, willst den Cursor an eine bestimmte Stelle in der PB IDE setzen lassen.

Ist zwar nicht wirlich das was brauchst, aber ich würde damit

Code: Alles auswählen

  Procedure GetEditorGadgetCursorX(Gadget) 
    ; returns X-Pos of Cursor 
    REG = GadgetID(Gadget) 
    SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE) 
    ProcedureReturn (Range\cpMax-(SendMessage_(REG,#EM_LINEINDEX,SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin),0))+1) 
  EndProcedure 
  
  Procedure GetEditorGadgetCursorY(Gadget) 
    ; returns Y-Pos of Cursor 
    REG = GadgetID(Gadget) 
    SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE) 
    ProcedureReturn SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin)+1 
  EndProcedure 
  
  Procedure EditorGadgetCursorTotalPos(Gadget) 
    ; returns relative Position of Cursor 
    SendMessage_(GadgetID(Gadget),#EM_EXGETSEL,0,Range.CHARRANGE) 
    ProcedureReturn Range\cpMax 
  EndProcedure 
  
  Procedure SetEditorGadgetPos(Gadget,x,y) 
    ; Set cursor position 
    REG = GadgetID(Gadget) 
    CharIdx = SendMessage_(REG,#EM_LINEINDEX,y-1,0) 
    LLength = SendMessage_(REG,#EM_LINELENGTH,CharIdx,0) 
    If LLength >= x-1 
      CharIdx + x-1 
    EndIf 
    Range.CHARRANGE 
    Range\cpMin = CharIdx 
    Range\cpMax = CharIdx 
    SendMessage_(REG,#EM_EXSETSEL,0,Range) 
  EndProcedure 
  
  OpenWindow(1,200,200,300,200,"EditorGadget",#PB_Window_SystemMenu) 
  CreateGadgetList(WindowID(1)) 
  EditorGadget(1,5,5,290,190) 
  
  AddGadgetItem(1,-1,"Hallo!") 
  AddGadgetItem(1,-1,"") 
  AddGadgetItem(1,-1,"Hier ein paar Proceduren") 
  AddGadgetItem(1,-1,"zur Steuerung des Cursors") 
  AddGadgetItem(1,-1,"im EditorGadget.") 
  
  SetEditorGadgetPos(1,7,2) 
  
  SetActiveGadget(1) 
  
  Repeat 
    Select WaitWindowEvent() 
      Case #PB_Event_CloseWindow: End 
    EndSelect 
    SetWindowText_(WindowID(1),"X: "+Str(GetEditorGadgetCursorX(1))+" Y: "+Str(GetEditorGadgetCursorY(1))+" -- Position: "+Str(EditorGadgetCursorTotalPos(1))) 
  ForEver 
experimentieren, und mit dem Zeugs

Handlenummer unter Cursor ermitteln.

Code: Alles auswählen

  Structure Point64
    StructureUnion
    p.point
    q.q
    EndStructureUnion
  EndStructure
  
  Procedure Thread(z)
    hndl = 0
    cursor.Point64 
    Repeat
      GetCursorPos_(cursor.Point64) 
      hndl = WindowFromPoint_( cursor\q ) 
      SetGadgetText(1,"Handle-Nummer unter Maus: "+Str(hndl)) 
      Delay(100)
    ForEver
    
  EndProcedure
  
  If OpenWindow(0,0,0,250,50,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    StickyWindow(0,1) 
    TextGadget(1,10,10,220,20,"",0)
    CreateThread(@Thread(),0)
    
    Repeat
      EventID=WaitWindowEvent()
      If EventID = #PB_Event_CloseWindow
        End
      EndIf
    ForEver
  EndIf
Mausklicks simulieren

Code: Alles auswählen

  Procedure Left_Click()
    Protected xy.point
    GetCursorPos_(xy.point)
    mouse_event_(#MOUSEEVENTF_LEFTDOWN, xy\x, xy\y, 0, 0)
    mouse_event_(#MOUSEEVENTF_LEFTUP, xy\x, xy\y, 0, 0)
  EndProcedure
  
  Procedure Left_DoubleClick()
    Protected xy.point
    GetCursorPos_(xy.point)
    mouse_event_(#MOUSEEVENTF_LEFTDOWN, xy\x, xy\y, 0, 0)
    mouse_event_(#MOUSEEVENTF_LEFTUP, xy\x, xy\y, 0, 0)
    mouse_event_(#MOUSEEVENTF_LEFTDOWN, xy\x, xy\y, 0, 0)
    mouse_event_(#MOUSEEVENTF_LEFTUP, xy\x, xy\y, 0, 0)
  EndProcedure
  
  Procedure Right_Click()
    Protected xy.point
    GetCursorPos_(xy.point)
    mouse_event_(#MOUSEEVENTF_RIGHTDOWN, xy\x, xy\y, 0, 0) 
    mouse_event_(#MOUSEEVENTF_RIGHTUP, xy\x, xy\y, 0, 0)
  EndProcedure
  
  Procedure Right_DoubleClick()
    Protected xy.point
    GetCursorPos_(xy.point)
    mouse_event_(#MOUSEEVENTF_RIGHTDOWN, xy\x, xy\y, 0, 0)
    mouse_event_(#MOUSEEVENTF_RIGHTUP, xy\x, xy\y, 0, 0)
    mouse_event_(#MOUSEEVENTF_RIGHTDOWN, xy\x, xy\y, 0, 0)
    mouse_event_(#MOUSEEVENTF_RIGHTUP, xy\x, xy\y, 0, 0)
  EndProcedure
  
  Procedure Middle_Click()
    Protected xy.point
    GetCursorPos_(xy.point)
    mouse_event_(#MOUSEEVENTF_MIDDLEDOWN, xy\x, xy\y, 0, 0)
    mouse_event_(#MOUSEEVENTF_MIDDLEUP, xy\x, xy\y, 0, 0)
  EndProcedure
  
  Procedure Middle_DoubleClick()
    Protected xy.point
    GetCursorPos_(xy.point)
    mouse_event_(#MOUSEEVENTF_MIDDLEDOWN, xy\x, xy\y, 0, 0)
    mouse_event_(#MOUSEEVENTF_MIDDLEUP, xy\x, xy\y, 0, 0)
    mouse_event_(#MOUSEEVENTF_MIDDLEDOWN, xy\x, xy\y, 0, 0)
    mouse_event_(#MOUSEEVENTF_MIDDLEUP, xy\x, xy\y, 0, 0)
  EndProcedure
  
  x=100 : y=100
  SetCursorPos_(x,y) ;erst mal an die Position setzen
Es geht immer irgendwie, selbst wenn es umständlich wird, einfach alles mögliche probieren, ich hänge zum teil 2 Tage vor Sturheit an einer Kleinigkeit, bevor ich aufgebe.

Schau dich hier um

http://www.rsbasic.de/winapi-library/

Da findest bestimmt was, mit dem es irgendwie geht.
https://www.geek.com/tech/a-commodore-6 ... s-1672510/
٩(̾●̮̮̃̾•̃̾)۶ __̴ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ ̡͌l̡̡̡̡.___٩(- ̮̮̃-̃)۶
Antworten