Re: Printing to hDc in VBA



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
>
>
>


.



Relevant Pages

  • Printing to hDc in VBA
    ... The control supports printing, but its documentation is not very good. ... I've tried to get a hDc using the CommonDialog Control like this: ... Dim PHdc As Long ... I then supply the returned value to the PrintToHdc method, ...
    (comp.databases.ms-access)
  • Re: Redraw problem with custom 3D border on subclassed edit control
    ... HDC hdc; ... "the OnNcPaint message for the window containing my control", ... with a raised border instead of the standard inset border of the stock ...
    (microsoft.public.win32.programmer.ui)
  • Re: HDC in activex control
    ... so I presume my control is windowed. ... Inside OnDraw - aquire HDC and render all objects into that DC (activeX ... >> I have an ATL activeX control where I'm trying to aquire the HDC ...
    (microsoft.public.vc.atl)
  • Re: Text Scaling in Metafile
    ... The problem may be with your choice of the reference device context. ... HDC hdcMetafile = CreateEnhMetaFile, ... SetWorldTransform(hdcMetafile, &xform); ... In the code I'm creating a font with size 1 and using ...
    (microsoft.public.win32.programmer.gdi)
  • Re: Screen capture with IE AxWebBrowser control and hidden Window
    ... The AxWebBrowser control can render its contents to a ... You can create a bitmap and then select it to a device context ... and have the browser control render its contents to that device. ... If a window is hidden then so are the child windows. ...
    (microsoft.public.dotnet.framework.drawing)