Hi, I'm trying to build my C++/CLI project with /W4 today and there's a warning I can't seem to avoid and hope someone here can help.
My project has a reference to Microsoft.mshtml for the web browser interfaces. At the first usage in code, I get a slew of warning similar to this:
1>htmlView.cpp(244): warning C4564: method 'open' of interface'mshtml::DispHTMLDocument' defines unsupported default parameter 'url'1> This diagnostic occurred while importing type 'mshtml::DispHTMLDocument ' from assembly 'Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
1> This diagnostic occurred while importing type 'mshtml::HTMLDocumentClass ' from assembly 'Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
I understand why it's warning (there are optional parameters in the managed interface but the generated C++ interface doesn't have the default values). That's fine.. I'd like to suppress the warning since I can't really do anything about the generated code.
I tried the following in various of places in the code including wrapping the whole file with it. Alas, it doesn't prevent the warning.
#pragma warning( push )
#pragma warning( suppress : 4564 ) // /W4 will warn about optional parameters in mshtml interface
. . . CLI Code . . .
If possible, I'd prefer to suppress it in the source instead of a compile-time switch so I thought I'd ask here... any suggestions?
I think I'm good endroit.parce I have to do all this in c + + / cli.
I get the source code of the site with c + + and I have records in a xml file. I route the file and now I have to recover word and it will be with c + + / cli.
You are declaring TimeProc as a pointer to a function which is totally incorrect.
It should be like:
// in the class definition in the header file:
void CALLBACK TimeProc(UINT wTimerID, UINT msg, DWORD dwUser, DWORD dw1, DWORD dw2);
// and the declaration in the .cpp file:
void CALLBACK CtestmmtimerDlg::TimeProc(UINT wTimerID, UINT msg, DWORD dwUser, DWORD dw1, DWORD dw2)
// implementation code here
I entered this Connect bug found by a coworker. If you're a C++/CLI dev you may want to upvote it.
The /clr compiler issues an error whereas the C++ compiler (and clang/llvm on Mac) accept the template code. It's a template using std::is_base_of and isn't too crazy. There's no managed code involved at all in fact (ie. no ref classes).