Hello, my name is Li Shao. I am a Software Design Engineer in Test in Visual C++ team. From June 3 to June 6, I had the opportunity to attend TechEd 2008 in Orlando along with two colleagues, Marian Luparu and Martha Wieczorek. Most of my time was spent at the Visual C++ Booth to answer customers’ questions. I also had the opportunity to work with Kate Gregory, one of our MVPs, at one booth secession. Here are some overall impressions based on the customers that I talked to:
· Customers are really excited to know that we have new MFC functionality.
Customers from many of the companies came by and looked at our demos of new MFC features. I have followed up with many of them with information such as the download site for the Visual Studio 2008 feature pack, pointers to walkthroughs, and a link to Kate Gregory’s PowerPoint presentation on new MFC functionality. Customers are all very glad to know about this new addition to MFC and agree that this provides a solution to modernizing their MFC applications.
There were some other questions related to MFC. Some customers were asking whether they should stay with MFC or should they migrate to new technologies, such as WPF. Some customers are concerned about staying with MFC as that they cannot find entry level people to do the UI work in MFC while it is much easier to find an entry level developer to write WPF/WinForm applications. Basically, these customers want guidance on how they should move their applications forward.
Of course, there is no simple answer to this question that applies to all our customers – each one has different constraints and priorities. In the end, this is a decision you’ll need to make based on your particular application needs. Regardless of what you choose, we’ll support you within Visual C++! If you want to stick with MFC, you can rest assured there will be many more updates to this technology. If you prefer to use WPF, we are working on building out guidance to help with this. In fact, Henry Sowizral from the Expression team gave a talk on how to refactor MFC application and migrate to WPF. With the new support, it is fairly easy to modernize existing MFC applications or create new MFC application with modernized UI.
There was one customer asking for new MFC support on Smart Devices which we don’t currently support. As far as I know, there is no current plan supporting new MFC on Smart Devices.
Here are some additional resources to help you learn more about the new MFC: a Channel 9 Video by Pat Brenner, one of our developers: http://channel9.msdn.com/showpost.aspx?postid=355087 and Pat’s VC Blog entry: http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx
· Customers have a lot of questions about native/managed interop
We received many questions regarding native managed interop. Many developers seem to face the challenge of moving their native application to .NET. We mentioned to customers the Marshalling library and they were interested in it. Here is a VCBlog Entry on Marshalling library: http://blogs.msdn.com/vcblog/archive/2007/04/25/marshaling-library-in-orcas.aspx. We have a Channel 9 Video too on Marshalling library by Sarita Bafna, one of our program managers: http://channel9.msdn.com/shows/WM_IN/Sarita-Bafna-VC-quotOrcasquot-Marshaling-Library-and-MFC-support-for-Common-Controls/ . Kate Gregory also has a great site for Marshalling library: http://www.marshal-as.net/ .
Some other interop related suggestions we had from customers are:
o Some customers asked about whether or not they can automatically generate wrapper class for their native components. The answer is that if the native component is a COM component, you can use the “Add reference” feature to generate a managed wrapper class, which is essentially the same as the wrapper class that would be generated by calling Tlbimport.exe. However, there is no automatic way to generate wrapper class for regular native classes.
o One customer asked if there are any samples on calling Silverlight components from native application. The answer is no for now. But this is a good suggestion and we can consider it.
o One customer would like to have a tool to merge his pure managed assemblies and IJW assemblies. Currently, ILMerge.exe can only merge pure managed assemblies. The recommended way to produce a single assembly for C# application and managed C++ applicationis to generate .NETMODULE files from your C# applications and pass the .NETMODULE files to the C++ linker along with the .obj files from the C++ applications.
o One customer commented that C++/CLR is great! He is using more /clr, less pInvoke or COM interop.
· Customers are interested in TR1 support
People were impressed with TR1 – specifically the Shared_Ptr and Regex support. One customer asked question about compatibility between Boost library and TR1. Here is the answer I conveyed from Stephan T. Lavavej:
TR1 is compatible with Boost in the sense that you can include both <regex> and <boost/regex.hpp> and nothing bad will happen. TR1 isn't compatible with Boost in the sense that tr1::regex and boost::regex are completely different types. TR1 is almost compatible with Boost in the sense that they both follow the TR1 spec closely. Programs currently using the TR1 subset of Boost can be converted to use TR1 with minor changes.
You can take a look at this blog entry and attached slides by Spephan T. Lavavej to learn more about TR1: http://blogs.msdn.com/vcblog/archive/2008/02/22/tr1-slide-decks.aspx.
· Customers in general are very excited by parallel computing and concurrency run time.
They would like to know more about parallel computing and the time frame parallel computing libraries and programming support will be available to public. There were a couple of talks on Parallel Computing during the TechEd.
Overall it is a very exciting and very educational experience to be able to talk to so many customers, listen to their concerns and answer their questions. Meanwhile, the questions and feedback we got from the customers also confirm our main strategies:
· Continued native support: such as renewed MFC support, C++0x, TR1, parallel computing, etc
· Improved and “friction free” managed and native interop.
I, and the other members of our team, hope to meet many more of our customers, in fact a number of my colleagues will be at the PDC this year – hope to see some of you there!
"If you prefer to use WPF, we are working on building out guidance to help with this. In fact, Henry Sowizral from the Expression team gave a talk on how to refactor MFC application and migrate to WPF. With the new support, it is fairly easy to modernize existing MFC applications or create new MFC application with modernized UI."
That's cool, and I imagine using WPF on the outside and MFC on the inside of an app would be the perfect combination for people with existing code. So... how do we do it? Do tell (some of us can't get to PDC/TechED).
In fact, if you could upgrade the classwizard to support WPF+MFC, then we might even be able to stop people demanding we do a total rewrite in C#.
Its great to hear that continued native support is planned, keep up the good work.
Hi Andy, thank for your comment. we’re working on guidance documents to help skin MFC applications with WPF. These will be made available on MSDN when completed. Unfortunately we don’t have an ETA as yet. We’ll post to the blog when they are.
"They would like to know more about parallel computing and the time frame parallel computing libraries and programming support will be available to public."
Most emphatically! Any heads-up Webcasts, MSDN articles, Channel 9 videos, etc., that can give us advance info. on developing VC++ software for that framework would be much appreciated.
Re: Thursday, July 03, 2008 1:38 PM by Wil
>> "Most emphatically! Any heads-up Webcasts, MSDN articles, Channel 9 videos, etc., that can give us advance info. on developing VC++ software for that framework would be much appreciated."
The PCP team recently launched a blog for their native concurrency platform at: http://blogs.msdn.com/nativeconcurrency/ - that would be the place to get the latest info.
'if the native component is a COM component, you can use the “Add reference” feature to generate a managed wrapper class'
In my experience that worked only for 32-bit code. For 64-bit code I had to use tlbimport. Did I do something wrong? Though that was using VS2005 and I didn't try it in VS2008.
> However, there is no automatic way to generate wrapper class for regular native classes.
Not any "official" one (i.e. from Microsoft), maybe. But SWIG can generate C# wrappers for C++ classes just fine (and avoids using C++/CLI).
I lately tried the VS2008 Feature Pack with MFC Next UI and sadly I have to say why did the MFC Team not manage to get even the look of the Office 2003 Command-Bars-Style pixel-matching to the real Office 2003 Product UI? The competitor Codejock does a much better job in creating a graphically perfect copy of the Command Bars having all shades/gradients and colours matching the real Office 2003 Products!
I stopped browsing the samples as I found out the Button controls (and many other) are in a poor graphical matching quality too!
As long as such additions are not equal to the original products I stay away from them...
Greetings, Moritz Leutenecker