TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
gjergj
NA
1
0
IHTMLrender and drawtodc
Nov 14 2004 5:05 PM
Hi, I am having problems with using the DrawToDC of the MSHTML.iHTMLElementRender in a VB.net application. For some reason I am getting a "catastrophic error". I am basing the code on c# examples, and I am not sure what exactly I am doing wrong. From the C# posts it seems that the drawtodc has a bug and you need to redifine it, so i followed their advice and specified an interface as below but without any luck: Imports System Imports System.Drawing Imports System.Runtime.InteropServices Imports mshtml
_ Interface IHTMLElementRender Sub DrawToDC(<[In]()> ByVal hDC As IntPtr) Sub SetDocumentPrinter(<[In](), MarshalAs(UnmanagedType.BStr)> ByVal bstrPrinterName As String, <[In]()> ByVal hDC As IntPtr) End Interface 'IHTMLElementRender On the main form of the application I am have the folowing code when a button is clicked: Dim objMSHTML As HTMLDocument Dim objDocument As IHTMLDocument2 Dim ips As IPersistStreamInit objMSHTML = New HTMLDocument() ips = DirectCast(objMSHTML, IPersistStreamInit) ips.InitNew() objDocument = objMSHTML.createDocumentFromUrl("http://www.google.com", String.Empty) Do Until objDocument.readyState = "complete" Application.DoEvents() Loop MsgBox(objDocument.body.outerHTML) Dim bodyElement As IHTMLElement Dim render As IHTMLElementRender If objDocument.body.outerHTML <> Nothing Then bodyElement = objDocument.body render = bodyElement Dim img As New Bitmap(600, 400) Dim g As Graphics = Graphics.FromImage(img) Dim memDC As IntPtr memDC = g.GetHdc() Try render.DrawToDC(memDC) Catch ex As Exception MsgBox(ex.ToString) End Try End If It seems like I am getting the HTML document just fine, is just that when I try to use DrawToDC to get the application to print/send to the DC i Created in memory, it causes the error. Any ideas on what I am doing wrong? From the dotnet newsgroups I was told I am not hosting MSHTMl fully and that might be the cause . I was told that I should use either the internetexplorer/webbrowser controls or the MSHTMl fully. I cannot find any source on the web on how to do this in vb.net I tried the following but this also failed. Dim browser As New SHDocVw.InternetExplorer() browser.Navigate("http://www.google.com") Do Until browser.ReadyState = 4 Application.DoEvents() Loop Dim objDocument As IHTMLDocument2 = browser.Document MsgBox(objDocument.body.outerHTML) Dim bodyElement As IHTMLElement = objDocument.body Dim render As IHTMLElementRender = bodyElement Dim img As New Bitmap(600, 400) Dim g As Graphics = Graphics.FromImage(img) Dim memDC As IntPtr memDC = g.GetHdc() Try render.DrawToDC(memDC) Catch ex As Exception MsgBox(ex.ToString) End Try Here are the links to where I got the C# examples: http://groups.google.com/groups?hl=en&lr=&threadm=a299f931.0406011058.43b92799%40posting.google.com&rnum=5&prev=/groups%3Fnum%3D100%26hl%3Den%26lr%3D%26q%3DDrawToDC%2B%2Bfailure http://blogs.msdn.com/rfarber/archive/2004/10/12/240943.aspx thanks
Reply
Answers (
0
)
referencing a mdiframe in a child-dll that is in a second project
GPIB Commands