Re: Printing to hDc in VBA
- From: "Stephen Lebans" <ForEmailGotoMy.WebSite.-WWWdotlebansdot...@xxxxxxxxxxxx>
- Date: Sat, 14 Jan 2006 21:03:03 GMT
Access does not expose a handle to a printer Device context from within or
outside of the Form or Report objects. In other words while the Visual Basic
object exposes a Printer Device Context the VBA object model, in particular
the Access VBa object model, does not.
To get a valid hDC for the printer you would have to open the Printer
yourself via the Printer API's. The ReportUtilities project on my site
contains sample code to do this but it is a complex task if you are not
familiar with the pertinent API's. Honestly, I have never used the Common
Dialog ActiveX control to return the DC for the current default printer so I
do not know if you are receiving a valid DC. I would think thought the
control would throw an error if it was unable to accept your cdlPDReturnDC
flag.
If your ActiveX control is specifying an Integer for the hDC parameter then
it sounds like it is an older control developed in the 16 bit Windows days.
Have you checked with the developer of the control for an update? Do they
have a Website where you can contact tech support?
Are you using the Office FileDialog object or the CommonDialog Control's
ActiveX?
--
HTH
Stephen Lebans
http://www.lebans.com
Access Code, Tips and Tricks
Please respond only to the newsgroups so everyone can benefit.
"Erik" <no_mails@xxxxxxxx> wrote in message
news:43c95aeb$0$1827$edfadb0f@xxxxxxxxxxxxxxxxxxxxxxx
>
> I'm using an ActiveX control to display a Gantt chart in my Access 2003
> application.
> It's all setup and programmed and displays nicely.
>
> The control supports printing, but its documentation is not very good. A
> VB example is supplied in the documentation, but it does not work in VBA.
>
> The VB example goes:
>
> Object.PrintToHdc Printer.hdc, 100, 100, 5, 5, 200....etc (multiple layout
> parameters)
>
> The problem seems to be that I don't have access to Printer.hdc (Handle to
> device context) in VBA
>
> I've tried to get a hDc using the CommonDialog Control like this:
>
> Dim PHdc As Long
>
> Me.ComDlg.Flags = cdlPDReturnDC
> Me.ComDlg.ShowPrinter
> PHdc = Me.ComDlg.hDC
> Me.GanttView.PrintToHdc PHdc, 1, 1, 0.3, 0.3, 100...etc
>
>
> I actually get a value back from ComDlg (ex. 153159585) but a few things
> appear strange:
>
> The PHdc variable needs to be dimensioned as a long, to avoid overflow,
> but the PrintToHdc method specifies an integer for the hDc parameter.
> It makes me wonder if it is a hDc value I get back afterall.
>
> After having selected a printer in the print dialog, I click the Print
> button. It now takes about 10 secs to return the hDc value - why so long?
>
> I then supply the returned (hDc) value to the PrintToHdc method, but
> nothing happens. No printer activity, no errors.
>
> I'm quite sure to PrintToHdc method is designed to work, but I don't
> really know how to obtain the hDc parameter, and if I should insert any
> additional code after the PrintToHdc method, to trigger the print out.
>
> Any ideas are velcome
>
> Thanks
>
> Erik Rudbeck
>
>
>
.
- Follow-Ups:
- Re: Printing to hDc in VBA
- From: Erik
- Re: Printing to hDc in VBA
- References:
- Printing to hDc in VBA
- From: Erik
- Printing to hDc in VBA
- Prev by Date: Re: Combo box, command button placement questions
- Next by Date: Wonder how to open debug-window from A97 VBA?
- Previous by thread: Printing to hDc in VBA
- Next by thread: Re: Printing to hDc in VBA
- Index(es):
Relevant Pages
|