Link to home
Start Free TrialLog in
Avatar of Sungar
Sungar

asked on

Use changes in Printer Setup when printing?

I am trying to add the ability to print from my app in VB6.  It seemed very simple, but I've run into a problem.

I let the user select the printer & settings to use, and then print; however, the settings get ignored and the app just uses the defaults...

Specifically, if I try and change the mode of my HP inkjet printer from Normal to Fast, or change the media type, these settings are ignored.

I am running Windows 2000.  I am also using Olympus ImageKnife for my images that I want to print.  Below is a code snippet:

---------------------------------
Declare Function PrintDlg Lib "comdlg32.dll" Alias "PrintDlgA" (pPrintdlg As PRINTDLGS) As Long

Type PRINTDLGS
        lStructSize As Long
        hwndOwner As Long
        hDevMode As Long
        hDevNames As Long
        hDC As Long
        flags As Long
        nFromPage As Integer
        nToPage As Integer
        nMinPage As Integer
        nMaxPage As Integer
        nCopies As Integer
        hInstance As Long
        lCustData As Long
        lpfnPrintHook As Long
        lpfnSetupHook As Long
        lpPrintTemplateName As String
        lpSetupTemplateName As String
        hPrintTemplate As Long
        hSetupTemplate As Long
End Type
Public PrintDialog As PRINTDLGS

----------------------------
Function PrinterSetup(ByVal hWnd As Long) As Long  
    PrintDialog.hwndOwner = hWnd
    PrintDialog.lStructSize = Len(PrintDialog)
    PrintDialog.flags = cdlPDPrintSetup Or cdlPDReturnDC Or cdlPDNoPageNums
    ShowPrinter = PrintDlg(PrintDialog)
End Function

-----------------------------
Sub PrintImage()
        Printer.Print
        PicbufViewer.PrintLeft = 0
        PicbufViewer.PrintTop = 0
        PicbufViewer.PrintWidth = ViewerImageWidth
        PicbufViewer.PrintHeight = ViewerImageHeight
        PicbufViewer.PrintContents Printer.hDC
        Printer.EndDoc
End Sub
Avatar of Bahnass
Bahnass
Flag of Egypt image

Common Dialog Does not realy do any thing with Printer

It is just a user inerface

before printing U get settings and set it programmatically

by setting properties of Printer object

Hope that helps
Avatar of Sungar
Sungar

ASKER

Ok, so how to I "extract" those settings from the Common Dialog and use them to "set" the printer object?

Every driver has it's own settings, and UI so it's not obvious to me how to apply the changes for each printer to the printer object.  I'm not really concerned with changing number of pages and stuff, but the driver details like quality & media type.
Avatar of Ryan Chong
Hi Sungar,

Some useful resource on how to set the Default Printer:

http://www.freevbcode.com/ShowCode.Asp?ID=641 

http://www.mvps.org/vbnet/code/system/defprinternt.htm

regards.
hey sungar i'm trying the same thing, i'm probably going the wrong way, but i placed all the printer devicenames in a listbox and want the user to print from there, does anybody know if this is possible
hey sungar i'm trying the same thing, i'm probably going the wrong way, but i placed all the printer devicenames in a listbox and want the user to print from there, does anybody know if this is possible
the first link helped me out! thanks
Avatar of Sungar

ASKER

So, this above code helped to set the default printer, but it doesn't help me to change printer settings internal to the printer driver, like quality mode & media settings.

Some drivers are actually working and remembering the settings but others aren't.  Weird.  Anyway I've leared a lot from the above links, just haven't solved all the problems yet.

Thanks for the help.
Hi Sungar,
It appears that you have forgotten this question. I will ask Community Support to close it unless you finalize it within 7 days. I will ask a Community Support Moderator to:

    Refund points and save as a 0-pt PAQ.

Sungar, Please DO NOT accept this comment as an answer.
EXPERTS: Post a comment if you are certain that an expert deserves credit.  Explain why.
==========
DanRollins -- EE database cleanup volunteer
ASKER CERTIFIED SOLUTION
Avatar of Netminder
Netminder

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial