Position des Eigenschaften Fensters ändern

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Position des Eigenschaften Fensters ändern

Beitrag von hjbremer »

Hallo liebe PBler, schönen guten Abend.

Kleines Problem
Für ein ExplorerListGadget rufe ich über ein PopUpMenu das Eigenschaftenfenster auf.

Wie kann ich die Position des Fensters festlegen. Momentan erscheint es rechts vom Cursor.
Ich hätte es gerne woanders, vorzugsweise in der Mitte.

hier ein Democode

Code: Alles auswählen

Procedure.i ImgKleinTreeProp(tree)
       
   Protected item = GetGadgetState(tree)
   Protected name.s = GetGadgetText(tree)
   
   If item > -1
      name = GetGadgetText(tree) + GetGadgetItemText(tree, item)
   EndIf
   
   Protected shellinfo.SHELLEXECUTEINFO 
   
   shellinfo\cbSize = SizeOf(SHELLEXECUTEINFO) 
   shellinfo\fMask = #SEE_MASK_NOCLOSEPROCESS | #SEE_MASK_INVOKEIDLIST | #SEE_MASK_FLAG_NO_UI 
   shellinfo\lpVerb = @"properties"
   shellinfo\lpFile = @name
   ShellExecuteEx_(@shellinfo)
   
EndProcedure


window = OpenWindow(#PB_Any, 0, 0, 400, 200, "ExplorerListGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   
   treepopup = CreatePopupImageMenu(#PB_Any, #PB_Menu_ModernLook)
         MenuItem(1, "neuen Ordner erstellen")
         MenuBar()
         MenuItem(2, "löschen" + #TAB$ + "entf")
         MenuItem(3, "umbenennen" + #TAB$ + "F2")
         MenuBar()
         MenuItem(4, "Eigenschaften")
         
   tree = ExplorerListGadget(#PB_Any, 10, 10, 380, 180, "*.*")
         
   Repeat : event = WaitWindowEvent()
               
            Select event
               Case #PB_Event_Gadget         
                  Select EventGadget()
                     Case tree
                         If EventType() = #PB_EventType_RightClick
                            DisplayPopupMenu(treepopup, WindowID(window))      
                         EndIf
                   EndSelect
                                            
               Case #PB_Event_Menu
                  Select EventMenu()
                     Case 4: ImgKleinTreeProp(tree)       
                  EndSelect
                  
            EndSelect
            
          
   Until event = #PB_Event_CloseWindow
 
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
NoUser

Re: Position des Eigenschaften Fensters ändern

Beitrag von NoUser »

Hallo

Ein fertiges Beispiel habe ich leider nicht. Es sollte jedoch über einen Dialog-Hook gehen.
Habe hier oder im EN-Forum mal ein Beispiel gesehen wo dies mit dem Datei öffnen Dialogfenster gemacht wurde.
Vielleicht hilft Dir diese Info bereits etwas.

lg Martin
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

Re: Position des Eigenschaften Fensters ändern

Beitrag von NicknameFJ »

Hallo HJBremer,

ich habe das immer so gelöst:
Cursorposition zwischenspeichern, Cursor an die Stelle setzen wo das PopUp erscheinen soll, PopUpFenster anzeigen und Cursor wieder an Position aus dem Zwischenspeicher setzen.

Aber vielleicht geht es ja viel direkter und einfacher

Grüße

NicknameFJ
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
Benutzeravatar
Rudi
Beiträge: 143
Registriert: 22.04.2010 18:28
Wohnort: #PB_Any

Re: Position des Eigenschaften Fensters ändern

Beitrag von Rudi »

...oder diese vier Zeilen ganz unten in die Prozedur einfügen:

Code: Alles auswählen

   Sleep_(250)
   hWnd = GetForegroundWindow_()
   GetWindowRect_(hWnd, @lp.RECT)
   SetWindowPos_(hWnd, 0, 0, 0, lp\right-lp\left, lp\bottom-lp\top, 0)
MfG.,Rudi
Win7 (x64)PB 5.4x (x86)5,7 Windows-LeistungsindexSuche
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: Position des Eigenschaften Fensters ändern

Beitrag von hjbremer »

NicknameFJ hat geschrieben:Hallo HJBremer,

ich habe das immer so gelöst:
Cursorposition zwischenspeichern, Cursor an die Stelle setzen wo das PopUp erscheinen soll, PopUpFenster anzeigen und Cursor wieder an Position aus dem Zwischenspeicher setzen.
Ja, das ist so simpel, da wäre ich nie darauf gekommen. :allright:
Entscheidend ist nämlich, das das Eigenschaften Fenster noch nicht angezeigt wird, sonst sieht man es kurz aufblitzen an der alten Position.

Danke an alle die sich damit befasst haben, für ihre Mühe. :allright:
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Antworten