Printrequester

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Printrequester

Beitrag von Konne »

Hallo ich habe mir mal die PrintLib angeschaut und kam nicht drauf wie ich feststellen kann welche einstellungen im Printrequester gemacht wurden. Wie bekomme ich zB raus dass nur markierung angeklickt wurde???
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Und wass bringt der Requester dann wenn man er eh nix macht???
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Der Printrequester macht schon was.
Den Drucker kann man auswählen (wenn man mehrere Drucker hat).
Die Einstellungen in den Druckertreibern sind
änderbar (werden allerdings nicht permanent übernommen).

Für einen kompletteren Zugriff auf die Druckroutinen musst Du
mutmaßlich etwas Aufwand treiben.

Mit Pb druckt man genauso aus wie in der Hilfe beschrieben.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Aber man muss doch irgendwie rausbekommen was in dem requester eingestellt wurde. Was bringt es mir wenn da "Markierter Text drucken2 aktiv ist ich es aber nicht mitbekomme?
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

So sollte es gehen:

Code: Alles auswählen

Info.S
PrintDlg.PRINTDLG
Result.L

DevMode = GlobalAlloc_(#GMEM_MOVEABLE | #GMEM_ZEROINIT, SizeOf(DEVMODE))
DevModeLocked = GlobalLock_(DevMode)

PrintDlg\lStructSize = SizeOf(PRINTDLG)
PrintDlg\Flags = #PD_ALLPAGES
PrintDlg\hDevMode = DevModeLocked

Result = PrintDlg_(PrintDlg)

If Result <> #False
  *DevMode.DEVMODE = PrintDlg\hDevMode

  Info = "Anzahl Kopien = " + Str(*DevMode\dmCopies)
  
  If PrintDlg\Flags & #PD_SELECTION
    Info = Info + #CR$ + "Nur markierten Text drucken"
   ElseIf PrintDlg\Flags & #PD_PAGENUMS
    Info = Info + #CR$ + "Nur die Seiten " + Str(PrintDlg\nFromPage) + "-" + Str(PrintDlg\nToPage) + " drucken"
  Else
    Info = Info + #CR$ + "Alles drucken"
  EndIf
  
  MessageRequester("Aktuelle Drucker-Einstellungen", Info, #MB_ICONINFORMATION)
EndIf

GlobalUnlock_(DevMode)
GlobalFree_(DevMode)
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Danke aber es geht nicht, da die Structure Fehlt
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Konne hat geschrieben:Danke aber es geht nicht, da die Structure Fehlt
Dann solltest Du entweder updaten, weil die fehlt nicht. Oder Du versuchst es
mit PRINTDLG_API, so ungefähr hieß die Strukture in älteren Versionen, oder
Du suchst Dir die Strukture in der MSDN raus und deklarierst sie selber.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

In PureBASIC 3.94 ist die Struktur PRINTDLG vordefiniert. Sollte dies in älteren Versionen noch nicht der Fall sein, hier ist sie (aus PBOSL_ExPrinter) zum Einfügen in den Kopf meines obigen Beispiels:

Code: Alles auswählen

Structure PRINTDLG
    lStructSize.l 
    hwndOwner.l 
    hDevMode.l 
    hDevNames.l 
    hDC.l 
    Flags.l 
    nFromPage.w 
    nToPage.w 
    nMinPage.w 
    nMaxPage.w 
    nCopies.w 
    hInstance.l 
    lCustData.l 
    lpfnPrintHook.l 
    lpfnSetupHook.l 
    lpPrintTemplateName.s 
    lpSetupTemplateName.s 
    hPrintTemplate.l 
    hSetupTemplate.l 
EndStructure
Getestet habe ich mein Beispiel übrigens erfolgreich unter Windows NT 4.0 SP6a und Windows XP SP2.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Vielen Dank nochmal :allright:
Antworten