Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Clipper Visual-Objects > Re: Printer Dia...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 3 of 3 Topic 11336 of 11703
Post > Topic >>

Re: Printer Dialog

by "Marc Verkade [Marti IT]" <marcatM@[EMAIL PROTECTED] > Apr 22, 2008 at 08:06 PM

Hai, Google is your friend, I posted some code a while ago...

http://groups.google.nl/group/comp.lang.clipper.visual-objects/browse_thread/thread/65601d0d4593db58/7822578618d57c7c?hl=nl&lnk=st&q=marc+verkade#7822578618d57c7c

Here my adjusted MC_PrintingDevice
I adjusted the method Setup() to Setup(lExtended,nCopies) of the 
PrintingDevice
class.

CLASS MC_PrintingDevice INHERIT PrintingDevice
 HIDDEN _PrintDialog  AS TPrintDlg PTR
 HIDDEN _ComDlgLoaded AS LOGIC

METHOD INit(uName) CLASS MC_PrintingDevice
 SUPER:INit(uName)

 // Load the print dialog from the common controls
 SELF:_ComDlgLoaded:=FALSE
 SELF:LoadComDlgDLL()

RETURN SELF


METHOD SetUp(lExtended,nCopies) CLASS MC_PrintingDevice
LOCAL pd    IS _WinPrintDlg
LOCAL struDevN   AS _windevNames
LOCAL lRetVal   AS LOGIC
LOCAL ptrHandle  AS PTR
LOCAL ptrString  AS PTR
LOCAL hDevMode   AS PTR
LOCAL pTemp   AS PTR
LOCAL pDVTemp   AS _winDEVMODE


 // Default 1 copie
 Default(@[EMAIL PROTECTED]
)
 Default(@[EMAIL PROTECTED]
)


 // Get thge active window
  ptrHandle := GetActiveWindow()
 lRetVal := TRUE
 pd.lStructSize := _SIZEOF(_WINPRINTDLG)


 // Check if we have an owner
 IF (ptrHandle != NULL_PTR)
  pd.hwndOwner := ptrHandle
 ELSE
  pd.hwndOwner := NULL_PTR
 ENDIF


 // Get the devmode
 hDevMode := GlobalAlloc(GHND, DWORD(iSize))
 IF (hDevMode != NULL_PTR) .AND. (pDevMode != NULL_PTR)
  pTemp := GlobalLock(hDevMode)
  MemCopy(pTemp, pDevMode, DWORD(iSize))
  GlobalUnlock(hDevMode)
 ENDIF


 // Set Dialog stuff
 pd.hDevMode    := hDevMode
 pd.hDevNames    := NULL_PTR
 pd.nFromPage    := 0
 pd.nToPage     := 0
 pd.nMinPage    := 0
 pd.nMaxPage    := 0
 pd.nCopies     := nCopies
 pd.hInstance    := _GetInst()


 IF lExtended
  // MLV 20080311 Remove PD_PrinterSetup for default printing dialog
  pd.Flags     := _OR(PD_USEDEVMODECOPIES, PD_COLLATE, PD_SELECTION)
 ELSE
  pd.Flags     := _OR(PD_USEDEVMODECOPIES, PD_COLLATE, PD_SELECTION,
PD_PRINTSETUP)
 END
 pd.lpfnSetupHook   := NULL_PTR
 pd.lpSetupTemplateName  := NULL_PTR
 pd.lpfnPrintHook   := NULL_PTR
 pd.lpPrintTemplateName  := NULL_PTR


 // Open the dialog
 IF !PCALL(SELF:_PrintDialog, @[EMAIL PROTECTED]
)
  lValid  := FALSE
  lRetVal := FALSE
 ELSE
  lValid := TRUE


  // Get device info
  struDevN  := GlobalLock(pd.hDevNames)
  ptrString  := PTR(_CAST,(DWORD(_CAST,struDevN) + struDevN.wDriverOffset
))
  SELF:cDriver:= Psz2String(ptrString)
  ptrString  := PTR(_CAST,(DWORD(_CAST,struDevN) + struDevN.wDeviceOffset
))
  SELF:cDevice:= Psz2String(ptrString)
  ptrString  := PTR(_CAST,(DWORD(_CAST,struDevN) + struDevN.wOutPutOffset
))
  SELF:c****t := Psz2String(ptrString)
  GlobalUnlock(pd.hDevNames)
  GlobalFree(pd.hDevNames)


  // Create room for the DevMode struct
  pDVTemp := GlobalLock(pd.hDevMode)
  iSize := pDVTemp.dmSize + pDVTemp.dmDriverExtra
  IF (pDevMode == NULL_PTR)
   pDevMode := MemAlloc(DWORD(iSize))
  ELSE
   pDevMode := MemRealloc(pDevMode, DWORD(iSize))
  ENDIF


  // Set the new devmode
  MemCopy(pDevMode, pDVTemp, DWORD(iSize))
  GlobalUnlock(pd.hDevMode)
  GlobalFree(pd.hDevMode)


  // Set the copies from the dialog
  SELF:Copies:=pd.nCopies


 ENDIF
RETURN lRetVal


METHOD LoadComDlgDLL() CLASS MC_PrintingDevice
LOCAL hDll   AS PTR
LOCAL rsFormat  AS ResourceString


 // Is it already loaded?
 IF !SELF:_ComDlgLoaded
  _ComDlgLoaded:=TRUE
  hDll:=LoadLibrary(PSZ(_CAST, "COMDLG32.DLL"))
  IF (hDll == NULL_PTR)
   rsFormat := ResourceString{__WCSLoadLibraryError}
   WCError{#__LoadComDlgDLL, #StandardDialog, VO_SPrintF(rsFormat:value,
"COMDLG32.DLL"),,,FALSE}:@[EMAIL PROTECTED]
()
   RETURN FALSE
  ENDIF
  SELF:_PrintDialog:=GetProcAddress(hDll, PSZ(_CAST, "PrintDlgA"))
 END
RETURN TRUE




-- 
Grtz, Marc


<brian@[EMAIL PROTECTED]
> schreef in bericht 
news:07e79e83-e3fd-4fe5-8d50-906fe656d47c@[EMAIL PROTECTED]
> Hello All,
>
> Could somebody please tell me how to enable number of copies when I
> call a print dialog.
>
> Cannot find any reference to this in help file.
>
> Also how to clear the copies afterwards.
>
> Many many thanks in advance.
>
> Brian.
>
 




 3 Posts in Topic:
Printer Dialog
"brian@[EMAIL PROTEC  2008-04-22 05:26:01 
Re: Printer Dialog
"Urs Eggmann" &  2008-04-22 15:00:31 
Re: Printer Dialog
"Marc Verkade [Marti  2008-04-22 20:06:41 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Fri Oct 10 21:11:38 CDT 2008.