Seite 1 von 1

(Erledigt)Position eines nicht Purebasic Fensters ermitteln.

Verfasst: 17.12.2017 18:44
von tft
Hallo,

und wider eine Frage zum Thema Fenster und co.

Mit nachfolgender Funktion finde ich ein Fenster und mache einen Copy eines bestimmten Bereichs.

Code: Alles auswählen

Procedure BDO_GET_KARTE()
  
  Static hShotWindow,Timer
  
  Proc$ = "BDO_GET_KARTE"
  
  If BDO = 1
    BDO = 2
    hShotWindow = FindWindow_(0,BDO_Fenster_Name$) 
    If hShotWindow = 0
      Debug( "Fenster Handler BDO not found")
    Else
        
      MakeWinScreenshot(#BDO_Get_Karte_Image1,hShotWindow,400,400,BDO_Karte_X,BDO_Karte_Y)
      StartDrawing(CanvasOutput(#BDO_GET_KARTE_Canvas))
      DrawImage(ImageID(#BDO_Get_Karte_Image1),0,0)
      StopDrawing()
      
    EndIf
  
  ElseIf BDO = 2
    
    If Timer < ElapsedMilliseconds()
      Timer = ElapsedMilliseconds() + 40
      MakeWinScreenshot(#BDO_Get_Karte_Image1,hShotWindow,400,400,BDO_Karte_X,BDO_Karte_Y)
      StartDrawing(CanvasOutput(#BDO_GET_KARTE_Canvas))
        DrawImage(ImageID(#BDO_Get_Karte_Image1),0,0)
      StopDrawing()
    EndIf
    
  EndIf
  
EndProcedure

Das funktioniert super.

Jetzt will ich ein Durchsichtiges Fenster von PureBasic über einer Bestimmten Stelle platzieren.
Die Position x und y des Purbasic Fensters will ich als Positions Angabe benutzen um dann den darunter liegenden teil mit obiger Funktion
auszuschneiden.
Das Fenster von BDO kann überall auf dem Desktop sein. Daher benötige ich über den Handler Zugriff auf die Fensterposition. Um in Relation dazu die
Koordinaten für das Graben zu berechnen.
Der Handler der von FindWindow_(0,BDO_Fenster_Name$) zurück gegeben wird sollte ein Zeiger auf die Window Strucktur sein.
Damit sollte ein Zugriff auf die benötigten Positions Daten möglich sein.
Ich weis aber nicht wie das geht. Und mein Englisch ist zu schlecht um die Beschreibungen im Internet zu verstehen.

Jemand da der sich damit auskennt?

Gruss TFT

Re: Position eines nicht Purebasic Fensters ermitteln.

Verfasst: 18.12.2017 09:54
von RSBasic
Mit GetWindowRect_() kannst du sowohl die Größe als auch die Position eines fremden Fensters ermitteln.
Beispiel: http://www.rsbasic.de/aktualisierung/wi ... mitteln.pb

Wenn du englische Sätze übersetzen möchtest: https://www.deepl.com/translator

Re: Position eines nicht Purebasic Fensters ermitteln.

Verfasst: 20.12.2017 11:38
von tft
Hallo,

Durch deine Info wurde mir geholfen.

Thx TFT :bounce: