Aktuelle Zeit: 24.04.2018 02:47

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Druckvorschau / WebGadget - Maximieren-Gadget
BeitragVerfasst: 23.06.2017 12:15 
Offline
Benutzeravatar

Registriert: 19.02.2010 20:19
Wohnort: Darmstadt
Hallo zusammen,

ich benutzt folgenden code (quelle nicht mehr gefunden) für Druckvorschau.
Wie kann ich die Funktionalität "Maximieren-Gadget" auf das Druck-Fenster bekommen?
EDIT: ein Bild sagt mehr als ...
Bild
Code:
Enumeration
  #myWindow
EndEnumeration
Enumeration
  #myWebGadget
  #Print
  #Preview
EndEnumeration

Enumeration 1
  #OLECMDID_OPEN         
  #OLECMDID_NEW       
  #OLECMDID_SAVE         
  #OLECMDID_SAVEAS           
  #OLECMDID_SAVECOPYAS   
  #OLECMDID_PRINT       
  #OLECMDID_PRINTPREVIEW       
  #OLECMDID_PAGESETUP       
  #OLECMDID_SPELL           
  #OLECMDID_PROPERTIES
  #OLECMDID_CUT         
  #OLECMDID_COPY       
  #OLECMDID_PASTE           
  #OLECMDID_PASTESPECIAL   
  #OLECMDID_UNDO           
  #OLECMDID_REDO         
  #OLECMDID_SELECTALL       
  #OLECMDID_CLEARSELECTION
  #OLECMDID_ZOOM           
  #OLECMDID_GETZOOMRANGE     
  #OLECMDID_UPDATECOMMANDS
  #OLECMDID_REFRESH           
  #OLECMDID_STOP             
  #OLECMDID_HIDETOOLBARS     
  #OLECMDID_SETPROGRESSMAX   
  #OLECMDID_SETPROGRESSPOS
  #OLECMDID_SETPROGRESSTEXT   
  #OLECMDID_SETTITLE         
  #OLECMDID_SETDOWNLOADSTATE
  #OLECMDID_STOPDOWNLOAD     
EndEnumeration

Enumeration 0
  #OLECMDEXECOPT_DODEFAULT     
  #OLECMDEXECOPT_PROMPTUSER       
  #OLECMDEXECOPT_DONTPROMPTUSER   
  #OLECMDEXECOPT_SHOWHELP       
EndEnumeration


Procedure Print_Preview(type)
  WebGadget(#myWebGadget, 0, 0, 0, 0, "")
  HideGadget(#myWebGadget, 1) 
  HTML.s = "<html><head><title>Test</title></head><body>T e s t</body></html>"
  SetGadgetItemText(#myWebGadget, #PB_Web_HtmlCode, HTML)
  WebObject.IWebBrowser2 = GetWindowLong_(GadgetID(#myWebGadget), #GWL_USERDATA)
  Repeat
    While WindowEvent(): Wend
    Delay(1)
    WebObject\get_Busy(@IsBusy.l)
  Until IsBusy = 0   
  WebObject\ExecWB(type, #OLECMDEXECOPT_PROMPTUSER, 0, 0)
  FreeGadget(#myWebGadget)
EndProcedure

OpenWindow(#myWindow, #PB_Any, #PB_Any, 800, 615, "", #PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
 
ButtonGadget(#Preview, 140, 10, 100, 20, "Print_Preview")

Repeat
  EventID = WaitWindowEvent()
  Select EventID
    Case  #PB_Event_Gadget
      Select EventGadget()
        Case #Preview
          Print_Preview(#OLECMDID_PRINTPREVIEW)
        Case #Print
          Print_Preview(#OLECMDID_PRINT)         
      EndSelect
  EndSelect       
Until EventID = #PB_Event_CloseWindow

Danke schon mal

MarcelX

_________________
Win-7, PB 5.31 (Windows - x86)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Druckvorschau / WebGadget - Maximieren-Gadget
BeitragVerfasst: 24.06.2017 21:13 
Offline
Benutzeravatar

Registriert: 11.06.2017 20:25
Leider hab ich auch keine Lösung für das Problem gefunden, nur schon mal eine Richtung.

Schmeiss mal

Code:
  Global Global_Bla
 
  Procedure.i CheckWin(WindowHandle.i, Parameter.i)
   
    Title$ = Space(256) : GetWindowText_(WindowHandle,@Title$,256)
   
    If FindString(Title$, "Druckvorschau", 1)
      Global_Bla = WindowHandle
      ProcedureReturn 0
    Else
      ; returning <> 0 will continue till all windows are searched
      ProcedureReturn 1
    EndIf
   
  EndProcedure
 
  Procedure SomeStuff(bla)
   
    Repeat
      If Global_Bla > 0
        Delay(3000)
        Debug "HERE"
        ShowWindow_(Global_Bla,#SW_HIDE)
        Delay(1000)
        ShowWindow_(Global_Bla,#SW_SHOW)
        Break
      EndIf
    ForEver
   
  EndProcedure


Über deine

Procedure Print_Preview(type)

Prozedur, und

Code:
  CreateThread(@SomeStuff(),0)


unter

Code:
  ButtonGadget(#Preview, 140, 10, 100, 20, "Print_Preview")


Dann schmeiss noch

MessageRequester("","OUT",#PB_MessageRequester_Ok)

unter

Code:
    WebObject\ExecWB(type, #OLECMDEXECOPT_PROMPTUSER, 0, 0)
    FreeGadget(#myWebGadget)


Wenn das alles machst kommst du ans Fenster Handle der Druckvorschau (Bitte mit Debugger starten) leider nimmt das Fenster um's verrecken keine Änderungen an !

Und noch was wird dir dann auffallen, der Messagerequester wird sofort ausgeführt (und gleich überdeckt von der Druckvorschau, Fenster weckschieben dann siehst es im Hintergrund) was dafür
spricht das deine Print_Preview Schleife sofort geschlossen wird.

Ohne Thread mit Repeat & Delay wäre es gar nicht möglich (ohne eine API Funktion die PB klar macht, ob das Fenster schon wirklich sichtbar ist, daß Handle gibt es nämmlich schon locker eine Sekunde zuvor)
irgendwas an das noch nicht sichtbare Fenster zu schicken.

Ich hab ja stark die Vermutung das die Druckvorschau kein echtes Fenster ist, sondern eines dieser verdammten ToolWindows, auf die mann kaum Einfluss hat.

_________________
https://www.geek.com/tech/a-commodore-6 ... s-1672510/
٩(̾●̮̮̃̾•̃̾)۶ __̴ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ ̡͌l̡̡̡̡.___٩(- ̮̮̃-̃)۶


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Druckvorschau / WebGadget - Maximieren-Gadget
BeitragVerfasst: 24.06.2017 22:59 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Nochmals zur Erinnerung: Keine Gadgets in einem Thread erstelllen! Das gilt insbesondere für das WebGadget, das in
keinem Falle Threadsicher ist.

Das Object bietet wohl keine Funktion zum maximieren, jedenfalls hab ich nichts gefunden. Also komplett selbst
erstellen oder dem Anwender überlassen.

_________________
PureBasic 5.62 | SpiderBasic 2.10 | Windows 10 Pro (x64) | Linux Mint 18.3 (x64)
"Ich möchte gerne die Welt verändern, doch Gott gibt den Quellcode nicht frei."
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Druckvorschau / WebGadget - Maximieren-Gadget
BeitragVerfasst: 25.06.2017 12:22 
Offline
Benutzeravatar

Registriert: 19.02.2010 20:19
Wohnort: Darmstadt
Danke für Ihr Antwort.
Zitat:
Also komplett selbst erstellen oder dem Anwender überlassen

@ts-soft:
Wie ist es gemeint?

_________________
Win-7, PB 5.31 (Windows - x86)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Druckvorschau / WebGadget - Maximieren-Gadget
BeitragVerfasst: 25.06.2017 12:35 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Naja, selbst eine Druckvorschau mit z.B. VectorDrawing erstellen. Ist natürlich eine Ecke aufwendiger als so ein
fertiges Object, dafür hast Du aber auch volle Kontrolle.

_________________
PureBasic 5.62 | SpiderBasic 2.10 | Windows 10 Pro (x64) | Linux Mint 18.3 (x64)
"Ich möchte gerne die Welt verändern, doch Gott gibt den Quellcode nicht frei."
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Druckvorschau / WebGadget - Maximieren-Gadget
BeitragVerfasst: 25.06.2017 14:05 
Offline
Benutzeravatar

Registriert: 19.02.2010 20:19
Wohnort: Darmstadt
Zitat:
Naja, selbst eine Druckvorschau mit z.B. VectorDrawing erstellen
OK
Hatte ich ursprünglich realisiert, bis ich den zitierte code fand.
Die Verwendung von WebObject\ExecWB hat schon viel Vorteilen.
EDIT: Übrigens, wenn ich ein Druckvorschau mit FF mache, geht es mit Maximieren und Co.

_________________
Win-7, PB 5.31 (Windows - x86)


Zuletzt geändert von marcelx am 26.06.2017 13:46, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Druckvorschau / WebGadget - Maximieren-Gadget
BeitragVerfasst: 25.06.2017 15:08 
Offline
Benutzeravatar

Registriert: 11.06.2017 20:25
marcelx hat geschrieben:
Zitat:
Naja, selbst eine Druckvorschau mit z.B. VectorDrawing erstellen
OK
Hatte ich ursprünglich realisier, bis ich den zitierte code fand.
Die Verwendung von WebObject\ExecWB hat schon viel Vorteilen.
EDIT: Übrigens, wenn ich ein Druckvorschau mit FF mache, geht es mit Maximieren und Co.


Weil alles von Mozilla keine Standard Fenster benutzt (kannst zb keine Submenu ID ermittlen/auflisten lassen per API) ist alles XUL basiert, desshalb auch so träge Oberfläche, und übler Ram Verbrauch.

ps: K-Meleon benutzt auch die Gecko Engine von Mozilla, nur ohne den XUL Mist :)

_________________
https://www.geek.com/tech/a-commodore-6 ... s-1672510/
٩(̾●̮̮̃̾•̃̾)۶ __̴ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ ̡͌l̡̡̡̡.___٩(- ̮̮̃-̃)۶


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Druckvorschau / WebGadget - Maximieren-Gadget
BeitragVerfasst: 26.06.2017 09:58 
Offline
Benutzeravatar

Registriert: 19.02.2010 20:19
Wohnort: Darmstadt
Kennt sich ein aus mit den IWebBrowser2 interface
https://msdn.microsoft.com/en-us/library/aa752127(v=vs.85).aspx
Vielleicht mit IWebBrowser2::ShowBrowserBar Method

_________________
Win-7, PB 5.31 (Windows - x86)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Druckvorschau / WebGadget - Maximieren-Gadget
BeitragVerfasst: 24.11.2017 10:51 
Offline
Benutzeravatar

Registriert: 19.02.2010 20:19
Wohnort: Darmstadt
Hallo,

ich habe folgende festgestellt:
wenn das ursprüngliche Fenster auf maximale Größe ist, wird das Druckvorschau-Fenster auch maximale.
Code:
SetWindowState(#myWindow, #PB_Window_Maximize)
nach
Code:
SetGadgetItemText(#myWebGadget, #PB_Web_HtmlCode, HTML)

und
Code:
SetWindowState(#myWindow, #PB_Window_Normal)
nach
Code:
FreeGadget(#myWebGadget)

Gruß
MarcelX

_________________
Win-7, PB 5.31 (Windows - x86)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye