Re: Win32 printing

From: Mike Nordell (tamlin@algonet.se)
Date: Fri May 02 2003 - 13:11:44 EDT

  • Next message: David Bolack: "Two Nibs"

    Dom Lachowicz wrote:

    > If you could cook up a patch and send it to the list,
    > I'm sure that Jordi or Jeremy could apply and test
    > that printing works at least as well as it does now.

    It seems to be a little more complicated than I expected I'm afraid...

    What we know is that we need a DEVMODE memory buffer large enough to hold
    private printer data, and this _only_ for the purpose of telling the printer
    driver to switch portrait<->landscape. There are (AFAIK) two ways to get
    this:

    1. Calling OpenPrinter, which require us to know the printer name, and then
    using that handle to call DocumentProperties which can provide this size.

    2. Use the HANDLE (HGLOBAL) to the current printers DEVMODE from the
    PRINTDLG struct from the XAP_Win32Dialog_Print class.

    I believe the latter would be "better", both since it wouldn't require the
    code to (somehow) get the printer name from somewhere, and also since it's
    already allocated and initialized. A problem is that this would probably
    require some unfortunate refactoring, especially the call to s_actuallyPrint
    (ap_EditMethods.cpp, 6578) would have to be abe to (directly or indirectly)
    get the mentioned HANDLE/HGLOBAL and pass it on to
    GR_Win32Graphics::startPage.

    But on the other hand, the comment at line 6571 in ap_EditMethods.cpp
    suggests orientation can not change per page, only for the whole document.
    If so, perhaps the ResetDC call inside GR_Win32Graphics::startPage isn't
    even needed?

    Anyway, this seems to be a way too complex matter for me to investigate
    right now. Sorry I couldn't be of more help.

    /Mike

    Amazing how wrong some companies can design programming interfaces...



    This archive was generated by hypermail 2.1.4 : Fri May 02 2003 - 13:23:23 EDT