It appears that I cannot correctly install the AxWebBrowser in VS2005.
I can instantiate an "AxWebBrows er browser" and refer to its members,
properties, and methods. I'm having trouble with the AxWebBrowser.Do cument:
When I print browser.Documen t.GetType().ToS tring() at runtime, I get
"mshtml.HTMLDoc umentClass". But The VS2005 compiler does not recognize the
member AxWebBrowser.Do cument as anything other than a System.Object -- e.g.,
"Define doc As mshtml.HTMLDocu mentClass = browser.Documen t" will fail to
compile with "Type 'mshtml.HTMLDoc umentClass' is not defined."
When I try to install the missing component(s) via "aximp" and "tlbimp",
there seems to be no effect whatsoever. The commands I run in the project
directory, in a VS.NET Command Prompt, are:
aximp c:\windows\syst em32\shdocvw.dl l
tlbimp mshtml.tlb
The only suspicious behavior that goes on during the installation itself is
a short list of warnings generated by tlbimp. They are as follows:
TlbImp : warning TI0000 : At least one of the arguments for
'IActiveIMMApp. GetDe faultIMEWnd' cannot be marshaled by the runtime
marshaler. Such arguments will therefore be passed as a pointer and may
require unsafe code to manipulate.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_ itf_mshtml_0256 _0010.hbmpCheck ed'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_ itf_mshtml_0256 _0010.hbmpUnche cked'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_ itf_mshtml_0256 _0010.hbmpItem' .
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '_userBITMAP.pB uffer'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_ itf_mshtml_0256 _0011.hbmpCheck ed'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_ itf_mshtml_0256 _0011.hbmpUnche cked'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_ itf_mshtml_0256 _0011.hbmpItem' .
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '_FLAGGED_BYTE_ BLOB.abData'.
Type library imported to MSHTML.dll
Whether or not these warnings are significant enough to prevent proper
installation, I do not know. In any event, the control doesn't seem to be
getting installed correctly at all. Any advice on doing this correctly or
determing the point of failure of this component's installation in the dev
environment?
--------
Bonus points: I am afraid I'm missing the bigger picture with typecasting in
VB .NET 2.0. Even though the compiler thinks AxWebBrowser.Do cument is a
simple Object, it still lets me reference members within it that only exist
in mshtml.HTMLDocu mentClass. That is, it doesn't complain that System.Object
has no such member as "documentelemen t". In fact, I've even tried nonsense
strings like "foobar" -- anything goes! The compiler will allow me to
pretend that AxWebBrowser.Do cument has any imaginary members I want it to
have, and then waits until runtime to see if I'm right. If the member does
exist, then great, the runtime environment hands it to me as a plain
System.Object. (From there, I can even continue printing out
GetType().ToStr ing(). In this manner I've learned of the existence of a
whole slew of classes I should have but don't have, such as
mshtml.HTMLHtml ElementClass.) Otherwise -- that is, if the member doesn't
exist ("foobar" or what have you) -- it hangs forever trying to search for
it. My questions are:
1) Why is the compiler so relaxed about missing datatypes, coercing them
upwards into Objects instead of complaining that they're missing?
2) Why does the compiler get so lenient about nonexistent members whenever
this happens?
3) Why does VB .NET hang whenever it can't find something, rather than
gracefully reporting the problem (e.g., by throwing an exception)?
I can instantiate an "AxWebBrows er browser" and refer to its members,
properties, and methods. I'm having trouble with the AxWebBrowser.Do cument:
When I print browser.Documen t.GetType().ToS tring() at runtime, I get
"mshtml.HTMLDoc umentClass". But The VS2005 compiler does not recognize the
member AxWebBrowser.Do cument as anything other than a System.Object -- e.g.,
"Define doc As mshtml.HTMLDocu mentClass = browser.Documen t" will fail to
compile with "Type 'mshtml.HTMLDoc umentClass' is not defined."
When I try to install the missing component(s) via "aximp" and "tlbimp",
there seems to be no effect whatsoever. The commands I run in the project
directory, in a VS.NET Command Prompt, are:
aximp c:\windows\syst em32\shdocvw.dl l
tlbimp mshtml.tlb
The only suspicious behavior that goes on during the installation itself is
a short list of warnings generated by tlbimp. They are as follows:
TlbImp : warning TI0000 : At least one of the arguments for
'IActiveIMMApp. GetDe faultIMEWnd' cannot be marshaled by the runtime
marshaler. Such arguments will therefore be passed as a pointer and may
require unsafe code to manipulate.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_ itf_mshtml_0256 _0010.hbmpCheck ed'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_ itf_mshtml_0256 _0010.hbmpUnche cked'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_ itf_mshtml_0256 _0010.hbmpItem' .
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '_userBITMAP.pB uffer'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_ itf_mshtml_0256 _0011.hbmpCheck ed'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_ itf_mshtml_0256 _0011.hbmpUnche cked'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_ itf_mshtml_0256 _0011.hbmpItem' .
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '_FLAGGED_BYTE_ BLOB.abData'.
Type library imported to MSHTML.dll
Whether or not these warnings are significant enough to prevent proper
installation, I do not know. In any event, the control doesn't seem to be
getting installed correctly at all. Any advice on doing this correctly or
determing the point of failure of this component's installation in the dev
environment?
--------
Bonus points: I am afraid I'm missing the bigger picture with typecasting in
VB .NET 2.0. Even though the compiler thinks AxWebBrowser.Do cument is a
simple Object, it still lets me reference members within it that only exist
in mshtml.HTMLDocu mentClass. That is, it doesn't complain that System.Object
has no such member as "documentelemen t". In fact, I've even tried nonsense
strings like "foobar" -- anything goes! The compiler will allow me to
pretend that AxWebBrowser.Do cument has any imaginary members I want it to
have, and then waits until runtime to see if I'm right. If the member does
exist, then great, the runtime environment hands it to me as a plain
System.Object. (From there, I can even continue printing out
GetType().ToStr ing(). In this manner I've learned of the existence of a
whole slew of classes I should have but don't have, such as
mshtml.HTMLHtml ElementClass.) Otherwise -- that is, if the member doesn't
exist ("foobar" or what have you) -- it hangs forever trying to search for
it. My questions are:
1) Why is the compiler so relaxed about missing datatypes, coercing them
upwards into Objects instead of complaining that they're missing?
2) Why does the compiler get so lenient about nonexistent members whenever
this happens?
3) Why does VB .NET hang whenever it can't find something, rather than
gracefully reporting the problem (e.g., by throwing an exception)?
Comment