Visual C++ Libraries update


Early in August, I blogged about our early thinking on Visual C++ post Orcas.  The C++ team and I got a huge amount of great feedback on this.  Thanks for the same.


 


The team is looking at the feedback and finalizing plans for where we should be focusing to move Visual C++ forward.  One of the first areas you will see us invest is in native libraries.  The team is working on a significant update to the Microsoft Foundation Classes (MFC).  We will be delivering this as an update to Visual Studio 2008 in the first half of 2008.  We will have a preview of the same sometime around the early part of the new year.


 


Using this update to MFC, developers will be able to create applications with the “look and feel” of Microsoft’s Office, Internet Explorer and Visual Studio.  Some of the specific features include Office 2007 Ribbon bar look, Internet Explorer look with rebars and task panes, Visual Studio look with sophisticated docking functionality, auto hide windows, property grids and the like.  You can also enable your users to customize your application through live drag and drop of menu items and toolbar buttons. 


 


In addition, we will also be delivering TR1 support.  TR1 is the first major addition to the standard C++ library.  Our implementation includes a number of important features such as smart pointers, regular expression parsing, new containers (tuple, array, unordered set, etc.), sophisticated random number generators, polymorphic function wrappers, type traits and more. 


 


Stay tuned for an early preview of this in the beginning of the new year.  Meanwhile, you can check out the C++ team blog for more information.  You should also check out our Channel 9 video on the new MFC libraries at https://channel9.msdn.com/showpost.aspx?postid=355087.


 


 


Namaste!

Comments (92)

  1. As an update to Visual Studio 2008, we’re pleased to announce a major new release of the Microsoft Foundation

  2. As an update to Visual Studio 2008, we’re pleased to announce a major new release of the Microsoft Foundation

  3. Ayman Shoukury has announced an update to Visual Studio 2008 that is a new release of the Microsoft Foundation

  4. Raman says:

    Hi Soma,

    Will there be Office 2007 look and feel controls as an update to VS2008 at the same timeframe?  

    This is one area where Microsoft could have added these controls as part of VS2008.

    Thanks,

    Raman

  5. Somasegar says:

    Hi Raman,

    Yes, all of the Office 2007 look and feel controls are part of the MFCNext + TR1 package, so they will ship as an update to VS 2008 – preview at the beginning of the year and the final release in the first half of next year.  

    VS 2008 has support for some Vista UI controls out of the box.

    -somasegar

  6. Having cut my teeth on MFC programming prior to coming to Microsoft, it is nostalgic and surprising that

  7. Raman says:

    Thanks.  What about non-MFC developers using VB.NET and C#?  Will there be Office 2007 look and feel Windows Forms or WPF controls out of the box?  I am using a thirdy-party Office 2007 style controls, but the quality of controls coming out of Microsoft is different from vendors.  I can see the difference when my app runs on XP and Vista, the refresh is horrible using third-party controls.  One other control that developers are probably looking for their apps is the hierarchical datagrid.

    Raman

  8. Having cut my teeth on MFC programming prior to coming to Microsoft, it is nostalgic and surprising that

  9. Joe says:

    Thank you for updating MFC. I still find it the best tool for writing consumer commercial desktop applications.

    I don’t like the ribbon interface. However, many of the controls demonstrated in the Channel 9 video would be very useful in other places. Hopefully many will be available without the ribbon.

    Will you finally add the super grid control used by Outlook in the contacts phone list? (The properties grid is one step, but still too narrowly defined.)

    I’ve also needed an outlook navigation pane. (Yeah, CodeJock provides this, but I don’t always need all the other baggage with CodeJock. Then there’s the classic persuading the boss to make the buy problem.)

    Encapsulating GDI+ would be helpful. Like too many things Microsoft, GDI+ can get over complicated when encoding/decoding and loading files from resources. The difference is starkly illustrated by comparing LeadTools with GDI+. Only problem is that LeadTools is a) expensive and b) massively bloated.)

    Could you also refine interdependencies so statically linked MFC apps are smaller. (There was a big jump in size a few years back.)

    One last thing. Sounds trivial, but could you fix the wizards to create correctly formatted code? Could you also fix the bug which inserts an MFC header into the .h file when you use the class wizard?

  10. Thank you Soma! I was anxiously waiting for the day when .NET buzz would slow down and people would realize .NET is not the answer for everything. :-)

  11. Ian Ellison-Taylor says:

    Raman, we are planning on providing similar controls for WPF but we don’t yet have a definitive list or a date we can announce yet, sorry.

    As soon as we have something we can talk about publically we’ll definitely blog about it so please do keep reading!

    Ian

    (General Manager for WPF)

  12. Narayan Subramanian says:

    As usual, I am assuming the source code for the Ribbon Bars etc. will be available just as usual with MFC bundled with Visual Studio product, right?

  13. Athan says:

    Finally some really good news!

    After all that managed code overdose, I missed something really native, really usefull for real-world development.

    I only wonder why you didn’t that earlier…

  14. thAAAnos says:

    Will you deliver? or you are just baiting us for VS08?

    Anyhow we will still wait the VC++ team to deliver even if MS will not :)

    it will give you a hobby also 😛

    Any plans on WTL? I always thought its way of doing things far better than MFC’s, and with your new compiler closer to the standard(s) that shouldn’t be a problem ehh? – besides are not templates the furure of libraries?

  15. Pierre Morel-Fourrier says:

    WOW !! What a surprise !

    It is so GREAT !

    I was just wondering if VS2008 would bring something new for an old-fashioned programmer like me 😉

    I’m using MFC for 15 years. I still had not found any good alternative to C++/MFC, even for developping retail software (ie I don’t think C++ is reserved for device drivers or games)

    IMHO, for fast & "not-fat" software, the only choice is C++/MFC (Winform is fine for developping a shareware or a "fatware", WPF is really good looking but needs 16Mb RAM and is slower than Java… OK.. maybe I’m kidding a little)

    Oh ! I’ve renewed my Codejock.com licence a few days ago… Wondering what these guys will do…

    Again, THANKS ! That’s a really really good decision (IMHO, of course)

    Eerrrr… do you need beta tester ? 😉

  16. Hi Narayan,

    Yes, full source will be included.

    Ronald Laeremans

    Visual C++ Product Unit Manager

  17. Somasegar says:

    Hi Pierre,

    Thanks.  Hopefully when we are ready with the preview, you could take a look at it and give us feedback.

    -somasegar

  18. Brian K says:

    TR1 will be useful.

    However, PLEASE fully implement the older existing standards first before beginning the new one (which is not even completely finalized). To name just some of the big missing parts:

    -Export (yes, it is part of the standard; personal opinion does not change that)

    -Two-phase name lookup (would be very useful)

    -Exception specifications (also part of the standard)

    You can not claim to care about standards if you only implement the parts that you like or those that are convenient.

  19. Yingle says:

    Great to hear this. Visual C++/MFC will sure exist for a long time. Other than the library feature update, I would also like to see the libraries are finally updated to use more standard C++ language features instead of the old style. I know you need to be compatible with previous releases, but it’s time for you to shift.

  20. tommorris says:

    "Look and Feel" are nice, but not at the expense of performance.

    I tried Prof-UIS (a competitor of BCG) in developing a Visual Studio like interface for my 3D editor. The performance hit was astonishing.  The use of this visually appealing interface produced so much laggy performance that I abandoned it altogether.

    Perhaps it was because of all of the owner-drawn controls and army of separate proprietary timers used by the GUI.

    Maybe performance can be improved by better integration into the MFC framework. If not, then this could be a big problem.

  21. Sniffy says:

    I disagree with Brian K,  please give us TR1 before ‘export’.  I’ve learned to live without ‘export’.

  22. Ayman Shoukry says:

    Regarding the conformance raised question, Stephan had some feedback at http://blogs.msdn.com/vcblog/archive/2007/11/09/announcing-a-major-mfc-update-plus-tr1-support.aspx#comments

    Thanks,

    Ayman Shoukry

    Lead Program Manager

    Visual C++ Team

  23. I’ve tried to quit using C++/MFC many times… not possible.

    My customers just really appreciate fast and lightweight applications. So you are.

    I’m so happy that – at last – we’ll soon get a new version of MFC that I’ve just created a new blog… I’ll get lots of things to say… in French (blogmfc.com)

  24. 국내 수많은 C/C++ 개발자들은 MFC가 죽은 것 아니냐? 심지어는 Windows Embedded CE 6 플랫폼 빌더 컴포넌트에서도 별도로 빠져 있고 의아해 하는 분들이 많을 것입니다.

  25. AfxBeginMfcIsBack says:

    Having cut my teeth on MFC programming prior to coming to Microsoft, it is nostalgic and surprising that …

    … damn, I gotta stop smoking weed, my short term memory is getting worse by the day

  26. Time for another weekly round-up of developer news that focuses on .NET, agile and general development

  27. Joe says:

    Can I add yet another deep felt appeal to Microsoft management to split the new BCG based UI elements from the rest of MFC. Making a single 3MB plus DLL is a horrible idea and will create a maintenance nightmare for many of us. I find it totally hypocritical for members of your teams to champion the use of DLLs and then to make it so we have to statically link to keep size under control.

    (Frankly, I’d like to see work done on reducing the size of MFC itself and in splitting the current library between base–collections, CString, CRect, etc., and extra stuff, like HTML based dialog boxes. At one point, you could statically link a minimal MFC to be half the size it is.

    You also need to rethink, and possibly abandon, the current design of SxS. This has caused an absurd number of problems and very little benefit in practice.)

  28. RA says:

    "In addition, we will also be delivering TR1 support."

    That is great news.

    But you guys have to do something about the IDE.

    I want something like VC 6.0 , slick, responsive and just enough features to make a veteran C++ programmer happy.

    This is something that I hear people complain about the whole time, Visual Studio 2005 is just to slow and bloated.

  29. Ayman Shoukry says:

    Hi Joe,

    Thanks for your input!

     Unfortunately, for VC2008 (VC9) & the MFC out of band update, there is no plan to change deployment mechanism (the new updates will be part of the MFC dlls). Nevertheless, we are deeply thinking about our deployment strategy for VC10. This is a very important scenario to improve and we have folks who already started investigating. I will make sure to pass your feedback to them since that is the perfect time to discuss as we will soon get into the planning phases.

    Thanks,

    Ayman Shoukry

    Lead Program Manager

    Visual C++ Team

  30. Joe says:

    Since the MFC situation is completely and totally unacceptable, will we be able to avoid the out-of-band update entirely? (I hope everyone boycotts it, but I suppose that would be too much to ask.)

  31. Joe says:

    I need to add one more thing; there is absolutely no reason you can’t fix the MFC distribution problem right now. This is software; all it takes is imagination, will and time. In the long run it is actually far better to make the change now than to commit prematurely and have to fight the harder battle later (I’ve been in this industry for nineteen years and seen this game far too many times–push a bad design through knowing momentum will then be on your side.)

    PS. Had it been up to me, I would have beefed up WTL and added full wizard support for it. Failing that, I would have revamped and updated MFC to slim it down and make it more C++ like. I would have made it so MFC apps could be moved to the latest version, perhaps with the help of wizards and other tools, without worrying about going the other direction. (This did happen twice when you changed CString–I know because both times I had to slightly modify a class derived from it.)

  32. Back in April I blogged about our initial thoughts on the future of Visual C++ . Soma shared some more

  33. Back in April I blogged about our initial thoughts on the future of Visual C++ . Soma shared some more

  34. Goat says:

    Prompted to ask: What language/technologies is the Visual studio IDE written in ?

  35. SvenC says:

    Hi Goat,

    must by Visual Cobol 2042 😉

  36. Greg Smith says:

    From the MFC announcement: "By building on top of BCGSoft’s BCGControlBar Library Professional Edition…", but later in the same release it says: "Developers looking for still more powerful MFC components should take a look at the BCGSoft product line. The BCGControlBar Library Professional Edition, for example, contains…".

    Can you tell us what will actually be included in VS2008? You could read this to mean that you have made sure that the MFC library is compatible with the BCGSoft library (i.e. you have to also buy the BCGSoft library), or you could take it to mean that you get the BCGControlBar Library Professional Edition.

  37. Kevin says:

    My hats off to you guys all !

    I’ve been living with MFC for over 10 years, without it I wouldn’t get any GUI project done so quick.

    Long Live MFC !!!!

  38. ricom says:

    Hi Goat,

    Really the IDE is a mix of a lot of things.  It uses COM for the major add-in plumbing but even though it uses COM it’s possible to have  managed packages and of course there are major parts written in managed code.  Once upon a time when it was "VC++" it was exclusively MFC based but those days are long gone.  With the product needing to support so many application models it really doesn’t make sense to write the tools in just one technology.   For instance would you write the WinForms designer in something other than managed code using winforms itself?  And would you write the C++ debugger in managed code?  You could but of course the latter predates managed code and the former would be a bear to write in native code.

    So, you’ll find we use many of our technologies to build Visual Studio.  That in itself can be quite a challenge.

    -Rico

  39. Frank Zhao says:

    Nice to hear MFC is still alive and kicking. I gave C++/CLI a try a month back, and I really like the String class there, especially the simple cast-like operation of moving from an integer/float to a string (and vice versa). Any chance of adding this support to either CString or another string class?

    Thanks.

    Frank Zhao

  40. Vojtech says:

    Rather fix VS2005…

  41. No NET says:

    Very good news since we have multiple-millions of lines of MFC/C++ code.

    Long Live MFC !!!!

  42. Symbian says:

    Will you fix all memory leaks inside of MFC?

  43. Ayman Shoukry says:

    Hi Greg,

     You don’t need to buy the BCGSoft Library to use the new MFC updates. The updates will be part of MFC. The features included there are a big subset of what BCGsoft offer in their Pro version but not everything that is in the Pro version. We will be working on publishing a specific list of the features/components that are specific to the MFC update

    Thanks,

    Ayman Shoukry

    Lead Program Manager

    Visual C++ Team

  44. Greg Smith says:

    Hi Ayman Shoukry,

    Thanks for the clarification. The feature I would really like to see in MFC is the Grid control. Is this likely to make it? Please consider this 1 vote (plea) for a really good Grid control that is supported by MFC.

    Greg Smith

  45. Ayman Shoukry says:

    Hi Greg,

    If you mean the Propoerty Grid, then yes, that is part of the MFC update.

    Thanks,

    Ayman Shoukry

  46. Ayman,

    If you mean ONLY Property Grid, then I think Greg Smith’s desire for a grid control is NOT in this upcoming version of MFC??? (think Excel, but not any of the spreadsheet behavior, but we MFC developers define the cell/row/column/grid editors and behavior)

  47. Glenn Puchtel says:

    IMHO, adopting and enhancing WTL, a more modern approach, makes more sense than investing resources to improve the highly criticized set of MFC libraries. If you want to improve productivity of the C++ community, make C++ a first class citizen again: provide more refactoring and analysis tools, like those available to C# developers, early adoption of C++0x and integrated UML.

  48. Bob Miller says:

    I must congratulate MS for the MFC update and the assurances that MFC is not dead and will be supported for the forseeable future. As a developer who got caught when Borland dropped OWL, I have been worried that I would be re-living this sad experience.

    OK – for an easy request if it has not already been done, fix CImageList to support alpha channel bitmaps.

    Thanks

    Bob Miller

  49. Ayman Shoukry says:

    Hi Mark,

    You are right, there is no generic spreadsheet-like grid control in MFC.

    Thanks,

    Ayman Shoukry

  50. Greg Smith says:

    RE: MFC spreadsheet-like grid control

    The BCGSoft Library Professional edition does include a spreadsheet-like grid control that includes a virtual mode that extends to huge sizes without unpleasant performance problems (at least at the grid control end). What I was hoping for was that this would be included in the new MFC revisions.

    All the best,

    Greg Smith

  51. Ken Stacey says:

    Why not talk with the Dundas people.  They recently opened their MFC toolkit (Ultimate Toolbox/Ultimate Grid/TCP) so I bet you could get it for a steal from Dundas to fully integrate with VS2008.  I know that we could just use it, but, having built-in support would be nice.  You would need to add the ribbon control, but they have a lot of other stuff to make up for the lack of that:

    http://www.codeproject.com/KB/MFC/UltimateGrid.aspx

    http://www.codeproject.com/KB/MFC/UltimateToolbox.aspx

    http://www.codeproject.com/KB/MFC/UltimateTCPIP.aspx

  52. Carl says:

    I know this will sound like a naive and totally ludicrous proposal, but I wish MS would retire MFC and move to another more modern native C++ class framework based on the .NET framework. I know that the .NET framework is available for managed C++, but we are not going there. Compatibility or interoperation with the CLR would not be a goal.  Nevertheless, we admire the .NET framework class library. We use straight-up ISO standard C++, but some of us do not like STL and the Boost library very much. Such a proposal probably sounds quite ridiculous to some hardcore MS programmers, but that hasn’t stopped me before :-)

  53. John Hardman says:

    Firstly, a couple of places where I add my support to previous comments:

    (1) Please implement exception specifications fully. Until they are supported properly the vast majority of developers will not use them. Add the support and we will eventually get safer, more reliable code in future.

    (2) Either get rid of the side-by-side stuff or make packing of releases far more automatic.

    Please consider adding more library support for common code in the areas of event-driven code and parallel processing. For example, I lose track of how many ways I have seen people implement code around WSAEnumNetworkEvents, WSAWaitForMultipleEvents etc, with many making the same mistakes. Putting some of those common bits of code into a Microsoft library could prevent some of the common errors, both in coding and design. Similarly with multi-threading, the number of times I see people polling and sleeping instead of writing event-driven code makes it clear that some library code that encourages event-driven code is required to change mindsets. ACE and Intel TBB help in these areas, but why aren’t Microsoft leading the way?

    Also, library code to make porting between Windows and UNIX platforms would be handy.

    Not a library thing, but given that we end up buying Purify Plus, BoundsChecker, PC-Lint, Intel ThreadChecker, Intel VTune etc and using tools such as doxygen and cppunit, why not try to include more of this sort of stuff in Visual Studio to help improve the quality of both managed AND unmanaged code? Even integrating some of the tools from SysInternals would help.

  54. someidiot says:

    omg! this has totally made my day :)

  55. CPPJunkie says:

    I simply cannot wait for the update to MFC to come out.  It is about time!  I’ve written my own UI updates using multiple inheritance and many other tricks to allow me to use a "modernish" look to my applications (theme awareness, draggable and dockable toolbars, menus that include images, etc.) but every new version of Windows and every major update to Visual Studio causes some rework.  With this update to MFC, I may finally be able to pull this code out!

    The push to have everything in managed code has been sickening to me so it is really nice to see some love given to this side of the tracks!  I tried the managed code route with several applications and the performance and reliability was nowhere near acceptable.  I’ve worked with C++ for many more years than I care to admit and have found that there is absolutely nothing that can compete with well written C++ code.

    Thanks for the updates and I am looking forward to seeing it hit my desktop sometime real soon!

  56. David Cameron says:

    Fantastic News :)

    Thank you MS and BCGSoft.

    A few questions:

    Where is the best place to register for e-mail updates on this?

    Will the initial beta be public, or should I register my interest somewhere?

    Can I have your babies?

    TIA,

    Dave

  57. What Visual C++ Library that targets the Web says:

    Je remercie Microsoft et BCGSoft pour la mise à jour des bibliothèques de Visual C++ et en particulier des MFC (intégrant le ruban d’office 2007, le look and feel  d’Office 2007 & 2003, les fenêtres auto-glissantes et auto hide de Visual Studio et les toolbars et rebars customisables d’Internet Explorer 7.0) vers cette nouvelle version 9.0 de Visual Studio 2008.

    Mais j’ai une petite réclamation. Ce nouvel update des MFC en particulier et des libraires de Visual C++ en général ne cible que les applications de bureaux et non les applications Web.  

    Je ne vois aucune librairie dédiée de Visual C++ 2008 qui ciblerait le Web alors que le développement Web prend une ampleur telle qu’on ne peut s’en passer à l’heure actuelle vu qu’on peut réaliser des applications web à interfaces riches d’internet (RIA, SylverLight, Ajax, etc…).

    Je sais que l’équipe de Visual C++ a abandonné la seule et unique bibliothèque ATL Server en la faisant passer en open source sur CodePlex.com.  

    Cette bibliothèque d’ATL Server était la seule qui soit purement orienté Web qui pouvait faire le bonheur des développeurs C++ qui n’avaient même pas besoin de regarder à ASP .NET ou à une quelconque technologie pour le Web tel que PHP ou les JSP.

    Je sais que les MFC permettent également ce genre de développement d’application mais pas aussi autant que faisait cette libraire dédiée d’ATL Server.  

    Ainsi ma question serait de savoir est-ce qu’il n’y pas de développeurs Web dans l’équipe de Visual C++ qui tout en réfléchissant à son futur pourraient repenser cette bibliothèque d’ATL Server et de la refondre ou de l’améliorer afin d’intégrer tous les gadgets actuels tels qu’on les voit dans ASP .NET par exemple (Web Contrôles ou des Web Forms).  

    Et si la reprise de ATL Server n’est pas envisageable pourquoi ne pas intégrer suffisamment le développement d’application ASP. NET avec C++/CLI comme code behind.

    Ce genre de question, j’ai déjà eu à la posé à l’équipe de Visual C++ Microsoft France. Mais leur réponse ne pas été satisfaisante et non convaincante.   C# et VB .NET permettent le développement d’application aussi Windows et qu’application Web.  De même Java le fait également avec ses pages JSP.  

    Il serait faux de croire que seul le C++ puisse s’intéresser à ce qui est sous le capot car Java tout comme C# entrent également sous le capot. Et d’ailleurs les classes de .NET sont faites en C# et pas en C++.  Le langage C# ou Java pénètre toutes les couches du développement n-tiers tels que la couche d’accès au donnés, la couche métiers et la couche présentation.

  58. SriB says:

    Will this new update also have controls like FlexGrid type table, buttons with embedded pictures within resource editor?

    In older VC5 & 6 these were supplied as VB ActiveX controls and was easy to use them in resource editor.  Don’t have any such controls for native now, in VS 05 or VS 08.

    Thanks for your attention.

    Sri

  59. A couple of months ago, I bl ogged about our plans to invest in native libraries . Today, we are taking

  60. A couple of months ago, I bl ogged about our plans to invest in native libraries . Today, we are taking

  61. NightHawk says:

    "Ordinal 10021 could not be located in the dynamic library mfc90ud.dll"

    encountering that error when I tried to build an MFC app exe with default appwizard values.

    System: Vista32 bit with UAC enabled and no themes

  62. NightHawk says:

    The samples directory is missing the Grid example in the MFC beta.

    Nor the CMFCGrid or CMFCGridCtrl  class can be found anywhere in the header files. Am I missing something?

    And I am able to find CMFCListCtrl but not the associated CMFCListView.

  63. NightHawk says:

    Suggestion:

    Currently at line 315 of AfxGlobals.h we see the below:

      AFX_IMPORT_DATA extern GLOBAL_DATA globalData;

    And to use this we have to use as below from the code:

      HFONT hf = globalData.fontDefaultGUIBold;

    Hope this would be changed in the final version to use some accessor function instead of global variable.

  64. Pat Brenner (MSFT) says:

    Hi Nighthawk,

    Thanks for the feedback and questions.

    The error about the ordinal missing seems to indicate that you did not install the debug MFC DLLs.  Are the new versions installed on the machine you are testing on?  I assume this is not a build error but a runtime error.

    There is no grid control included with this release.

    There is no CMFCListView associated with the new CMFCListCtrl class.

    I’ll open a bug about adding accessors for the members of the globalData structure.

    Thanks again,

    Pat Brenner

    Visual C++ Libraries Developer

  65. Bruce Ricker says:

    Hi

    One of the biggest advantages of Java and .NET is that the compiler with all the runtimes is available – Royalty free – for use in our programs. This opens many opportunities for self-generating / self compiling code etc.

    Will a Royalty free version of the C++ (non-managed) Compiler plus TR1 etc. be available for download. (Visual Studio Express is the VS 2005 equivilant of what I’m hoping for.)

    Thanks

    Bruce Ricker

  66. MrMFC says:

    Mr. Bruce Ricker, Take your BS to Java and .Net forums. This is about MFC and desktop applications development.

    If you can’t afford a few hundred bucks for a development tool you can’t expect to profit from it.

  67. Bruce Ricker says:

    Hey Mr MFC

    I’m talking about MFC/STL too.

    I have a calculation server running which dynamically generates, compiles, loads and links in a dll with user customizable Expressions. These genuine compiled expressions execute 20-50 times faster then any Interpreted equivalent and about 3-7 times faster than the exact same thing in c#.

    These performance gains are possible using native compiled code in spite of the additional indirection that the late binding requires. Use of Native code also eliminates all the CLR overhead which would otherwise be necessary because of the .NET garbage collector. That translates directly into support of three times as many values with the same memory as any CLR/Java equivalent. It also eliminates the GCs performance hit.

    >>Mr. Bruce Ricker, Take your BS to Java and .Net forums.

    >> This is about MFC and desktop applications development.

    This is not .NET BS. My Client is an MFC OLE Server which provides central calculation and statistical services to any type of client – .NET or native C++.

    >> If you can’t afford a few hundred bucks for a development tool

    >> you can’t expect to profit from it.

    Visual Studio Express for C++ (native) is a (minimum) prerequisite for my app. Not every customer wants to pay additional thousands just for the compiler and linker and C++ runtime libraries on the server. I developed the Server / Client app in native c++ with “Visual Studio 2005 Professional” (MSDN). I have no problems dynamically loading in dlls that I generate in the fly with the compiler from other product versions.

    I’ve been an MSDN subscriber on and off for about 14 years now. I know the value of good development tools very well. For my use case, however, I just need the compiler, linker and C++ runtime libraries on the target.

    At any rate, these minimum requirements are not the mainstream yet as apparent from MrMFCs comments. There are, however, millions of students who are genuinely not able to afford professional development tools at the moment. In their interest I formulate my question(s) in another manner.

    Will Microsoft also release a free downloadable “Visual Studio Express 2008 for C++” (or WXP SDK with compiler, linker and runtime libs)?

    For native code, not CLR?

    Can users still generate dlls with it?

  68. SvenC says:

    Hi Bruce,

    what are you missing in the current version of VC++ Express?

    Check here: http://www.microsoft.com/express/vc/Default.aspx

    SvenC

  69. Bruce Ricker says:

    Hi SvenC

    Hey cool thanks for the link.

    I hadn’t been there for ages. At first glance it looks like the new VC++ Express 2008 has everything I need.

    Rock and Roll dude. I can start porting! I’d love to use those new MFC GUI features in my client. Express doesn’t have the MFC but it has the compiler, linker, SDK, PCHs and DLLs. It even supports 32/64 bit! That’s what I need on the Target. There is even an option to install it without the GUI! At first glance it Looks Perfect!

    I’ll have to test a bit though… and/or… Does anyone know if the Express CRT malloc routines are still compatible with the libraries in the other C++ Product versions? Is the CRT compatible across all Product versions?

    C ya

    Bruce

  70. SvenC says:

    Hi Bruce,

    the CRT is different for each version when you take 2002, 2003, 2005 and 2008 as versions. It is the same when you talk of the editions Express, Professional, Team System of one version.

    But even service packs can introduce new CRT versions. So if you want truly independent modules do it the Win32 or COM way: never every allocate memory in one module and free it in another module. Either make the objects ref counted and self-deletable like in COM or export Free-functions for from a module when a module exposes dynamic memory to other modules. You might also use a system memory allocator like CoTaskMemxxx across all modules. But calling new in one module and delete in another will break if two different version of the CRT are used in those modules.

    SvenC

  71. Daniel Mehrwald says:

    Could’nt scope with the .NET libarys and was still using MFC, so this great news for me ! Thank you !

    RG

  72. Jeremy Gugenheim says:

    And I thought I was the only person left on the planet using MFC. You’ve all made me very happy. Thanks for the update to MFC, it still works it’s still a great way to provide GUI product to my customers. Long may it live. JG

  73. Kevin McNitt says:

    With the Update to MFC are the going to fix

    CStdioFile?

    The GetLength, Seek, and GetPosition functions will not work if the file is greater then 2GB.

    You would think that since they use longlong for declaration you would think they would work but they call seek() and tell() and not the 64bit versions of these functions.

    I looked at the VS2008 source code for CStdioFile and it still has the above deficiencies.

    Any idea if it is going to be fixed?

  74. The following ideas (not all yet implemented) seem to me to be right on the money:

    1. Encourage native development, of course, in C and C++ (as well as .NET, especially now, when MSVC is the only VS "personality" able to link in both manage and unmanaged code, so, to combine both worlds seamlessly). Until Phoenix will be ready, MSVC++ is the only language able to fly that high!

    2. Enforce the maximum ASNI compliance for both C and C++ compilers. Also, beyond ANSI compliance, at least boost and loky should be included in future RTMs and fully integrated in the help file system. Special plugins to update both source and help would be also really appreciated. Provide even integrated POSIX compliant libraries, because if the UNIX/LINUX/cross platform developers are given a chance, they will not have to use GCC and, seeing the difference, will actually stay in Windows/Visual Studio! Even for cross platform tasks. This last paragraph is subtle / important.

    3. Renewing MFC, WTL, ATL and the traditional values Windows developers always had, even including COM/DCOM/ActiveX/COM+, is not only an extremely inspired idea, but it’s also proving that “good things are forever” right?

    4. Provide different defaults for project settings, e.g. the debug target should have "Enable browse information" set to "Include All Browse Information (/FR)" or at least set to "No Local symbols". This options not being enabled by default, reduces the whole artistic impression of the IDE (e.g. in wxWidgets, they didn’t even know about this, and this gave them ideas about using other/inferior IDE alternatives, like CodeBlocks, etc). For mixed (C/C++) projects, the "Compile As" advanced option should normally set to "Default" instead of C++. I know about mangling, I know, I hear ya, this is debatable, but it may equally hurt, because most developers consider a file with c extension to be taken as a C file. I’ve noticed all sort of misunderstandings about the ANSI C level of compliance MSVC compiler offers, most coming naturally from this assumption. Same about RTTI (emit RTTI information) – currently defaulted to No, right? Well, this may have deeper reasons… But still…

    5. When a project is a member of a solution (project group, I am an exBorlander) and we change a certain option, we do have the choice of affecting one, all or certain targets, inside the project, but there is no choice to propagate this decision, up, to the solution, and sometimes this can come extremely handy, because you play with options at a project level until you find the right recipe, then have to go up/back, at solution level and in most cases, have to go propagate the change to each individual project. I am not sure; do you have solution templates versus project templates? Do you have functional API to clone an "exemplary project" to an entire solution or to straighten up an entire solution by overriding (or not overriding) project level dissemination?

    6. The debugging experience is outstanding, especially in terms of STL, but hey, what if I want to switch to the regular debugger view, giving me the STL container internals… I couldn’t find such an opportunity. Also, when because we’re dealing with a partially evaluable class, at least the hint over the "red" debugger display should offer an explanation (I do know that the explanation of why the "expression" could not be evaluated exists in debugger kernel, so why not offering it to the users?)

    7. Until the ANSI committee decides to standardize the C++ PME (Property Method Event) semantics, since you do have a very nice set of related proprietary extensions (talking about managed C++) why not adding some of these semantics to native C++ as well? I know this sounds crazy, but if you think at this one twice, you may end up by saying, well, this would be very yummy, indeed. I do know that this is anything but easy…

    8. MSBuild is great, but it should not replace nmake functionality… They should both continue to coexist, for obvious reasons.

    9. At last but not at least, since money is no problem, why not giving your C++ compiler an option to be GCC compatible (to implement both C/GCC and C++/G++ extensions)? I know this sounds crazy too, but let’s think at this one together… What would this encourage? Well, for starters, an explosion of open source ports to windows, using your compiler instead of GCC/MinGW/cygwin (well cygwin goes a little bit beyond this idea). So, being given a chance to use your compiler and IDE, they will see the difference in terms of performance, both at compile time and run time. At Borland we used to have a saying "fast is good, slow is bad". Well, all this ports, already happening, will happen INSIDE your DEVELOPER TOOLS OFFER and, instead of giving people ideas about trying more generic/powerful tools, will show people THE DIFFERENCE. The commercial prognosis says that by 2012, most commercial offerings will be cross platform (just to be in fashion). What better way of showing the superiority of Windows than via development tools? It’s been said "Developers, Developers, Developers!!!" Right?

    These would be my $.02 – I salute your trajectory, of extending traditional / true values, e.g. native C++ development and cool renewed libraries (e.g. MFC) instead forcefully promoting new technologies only. I believe that the real values come from innovating on existing grounds.

    Yours Truly,

    Daniel – Pensacola

  75. The following ideas (not all yet implemented) seem to me to be right on the money:

    1. Encourage native development, of course, in C and C++ (as well as .NET, especially now, when MSVC is the only VS "personality" able to link in both manage and unmanaged code, so, to combine both worlds seamlessly). Until Phoenix will be ready, MSVC++ is the only language able to fly that high!

    2. Enforce the maximum ASNI compliance for both C and C++ compilers. Also, beyond ANSI compliance, at least boost and loky should be included in future RTMs and fully integrated in the help file system. Special plugins to update both source and help would be also really appreciated. Provide even integrated POSIX compliant libraries, because if the UNIX/LINUX/cross platform developers are given a chance, they will not have to use GCC and, seeing the difference, will actually stay in Windows/Visual Studio! Even for cross platform tasks. This last paragraph is subtle / important.

    3. Renewing MFC, WTL, ATL and the traditional values Windows developers always had, even including COM/DCOM/ActiveX/COM+, is not only an extremely inspired idea, but it’s also proving that “good things are forever” right?

    4. Provide different defaults for project settings, e.g. the debug target should have "Enable browse information" set to "Include All Browse Information (/FR)" or at least set to "No Local symbols". This options not being enabled by default, reduces the whole artistic impression of the IDE (e.g. in wxWidgets, they didn’t even know about this, and this gave them ideas about using other/inferior IDE alternatives, like CodeBlocks, etc). For mixed (C/C++) projects, the "Compile As" advanced option should normally set to "Default" instead of C++. I know about mangling, I know, I hear ya, this is debatable, but it may equally hurt, because most developers consider a file with c extension to be taken as a C file. I’ve noticed all sort of misunderstandings about the ANSI C level of compliance MSVC compiler offers, most coming naturally from this assumption. Same about RTTI (emit RTTI information) – currently defaulted to No, right? Well, this may have deeper reasons… But still…

    5. When a project is a member of a solution (project group, I am an exBorlander) and we change a certain option, we do have the choice of affecting one, all or certain targets, inside the project, but there is no choice to propagate this decision, up, to the solution, and sometimes this can come extremely handy, because you play with options at a project level until you find the right recipe, then have to go up/back, at solution level and in most cases, have to go propagate the change to each individual project. I am not sure; do you have solution templates versus project templates? Do you have functional API to clone an "exemplary project" to an entire solution or to straighten up an entire solution by overriding (or not overriding) project level dissemination?

    6. The debugging experience is outstanding, especially in terms of STL, but hey, what if I want to switch to the regular debugger view, giving me the STL container internals… I couldn’t find such an opportunity. Also, when because we’re dealing with a partially evaluable class, at least the hint over the "red" debugger display should offer an explanation (I do know that the explanation of why the "expression" could not be evaluated exists in debugger kernel, so why not offering it to the users?)

    7. Until the ANSI committee decides to standardize the C++ PME (Property Method Event) semantics, since you do have a very nice set of related proprietary extensions (talking about managed C++) why not adding some of these semantics to native C++ as well? I know this sounds crazy, but if you think at this one twice, you may end up by saying, well, this would be very yummy, indeed. I do know that this is anything but easy…

    8. MSBuild is great, but it should not replace nmake functionality… They should both continue to coexist, for obvious reasons.

    9. At last but not at least, since money is no problem, why not giving your C++ compiler an option to be GCC compatible (to implement both C/GCC and C++/G++ extensions)? I know this sounds crazy too, but let’s think at this one together… What would this encourage? Well, for starters, an explosion of open source ports to windows, using your compiler instead of GCC/MinGW/cygwin (well cygwin goes a little bit beyond this idea). So, being given a chance to use your compiler and IDE, they will see the difference in terms of performance, both at compile time and run time. At Borland we used to have a saying "fast is good, slow is bad". Well, all this ports, already happening, will happen INSIDE your DEVELOPER TOOLS OFFER and, instead of giving people ideas about trying more generic/powerful tools, will show people THE DIFFERENCE. The commercial prognosis says that by 2012, most commercial offerings will be cross platform (just to be in fashion). What better way of showing the superiority of Windows than via development tools? It’s been said "Developers, Developers, Developers!!!" Right?

    These would be my $.02 – I salute your trajectory, of extending traditional / true values, e.g. native C++ development and cool renewed libraries (e.g. MFC) instead forcefully promoting new technologies only. I believe that the real values come from innovating on existing grounds.

    Yours Truly,

    Daniel – Pensacola

  76. Mr.MFC says:

    I am exploring new MFC controls in ‘New Controls’ sample and tried to disable an item ‘item2’ in the menu button of Page1.cpp as below:

    CMenu *pSubMenu=m_menu.GetSubMenu(0);

    if(pSubMenu)

    {

      pSubMenu->EnableMenuItem(1,FALSE);

      m_btnMenu.m_hMenu = pSubMenu->GetSafeHmenu();

    }

    But the item doesn’t get disabled and sends a notification when that item is clicked.

    I would have liked design time property settings in resource editor for the controls without having to code zillions of controls. But it is better than no support. As somebody else has already pointed out, CMFCGrid would be nice to have, but missing in this update.

    Thanks for your effort in modernising MFC.

  77. Brian Bailie says:

    Yipee!

    Native Code is our bread and butter. More to the point, we have no use for anything but. We tried hard to get into .NET and just couldn’t find a reason for it.

    Like many others here, I bet, we finally just switched from VC6 to VS2005. And although we knew we had to comtemporize ourselves, we still miss our old VC6 friend.

    2005 costs in productivity. We’re here, but not really happy about it.

    Having looked a lot, we have not found a suitable replacement for MFC. Seriously, I write the paychecks. We’ve looked at it hard.

    We write retail-distributed apps. They do things in real-time which still push the hardware, which is impressive these days. Using MFC we have a nice, light and fast application. (VC6 was lighter and faster, though)

    Everything we write has considerable time invested in optimized design and implementation. We’ve done some in .NET and it really craters. About the only thing ‘nice’ in all the managed solutions from MS that we’ve been interested in is forms. Really, I can live without them. I’d like to see some MFC geometry management though, if it’s so easy to use, I’m not even aware of it. Speaking of forms, and therein resources, put back copy and paste functionality across resource files, please.

    How about producing an IDE ‘mode’ for native code writers? The search mechanism of MSDN, for instance, comes with a lot of sorting through .NET irrelevance.

    The prior commentary regarding propogation of project settings up through the solution is great. But at the very least, the mechanism in VC6 was effective, especially in allowing you to adjust one property on a project in a set of selected configurations. If you do it in VS2005 it wipes out the rest of the settings on the page.

    Further, I’d like to set solution ‘recipes’.

    Also it would be nice to start a new project based on another project in the same solution. Copying project settings is time-consuming.

    Also please consider having an analyst study the time required to use the current IDE compared to VC6. For instance adding event handlers takes forever compared to the ClassWizard, which wasn’t great itself.

    Also VS2005 really isn’t stable. We’re starting tests on VS 2008, and have hopes. But memory leaks in the flagship IDE is bad. Please make it rock solid.

    While we’re at it, Intellisense/Parameter list has always been easily broken. How about finally nailing it down too.

    Compiler/Language conformance to standards and proposed standards would be great if we could control it easily.

    If you study the availability of third party controls for simple tasks like Docking, you see our needs. (I love hearing that you’re working in that direction!) I do not mean to have you put third-party folks out of business; but really common things should be in the library. You also need the ‘fully customizable toolbar’, tabbed MDI, etc.

    Now I have to say something about ‘security’:

      I’m tired of hearing about it!

    Microsoft products are ubiquitous, hence easy prey for hacks, viruses, whatever. Most ISVs are not as concerned because they simply aren’t vulnerable the way MS is. Yeah, sure somebody will try to hack my code. (especially after this post!) But I only have 60,000 customers or so. Not big enough to be viral.

    Further, we know how to write programs. So, please make the tools so we can adjust the ‘safety’ level. Really, I didn’t NEED to change all my sprintf into sprintf_s. In fact, I already know the buffer and have checked it’s size, so why are you wasting my execution time? It’s bogus.

    And please consider carefully before ‘Deprecating’ anything.

    Finally I want to say thanks for listening!

    We in the field don’t often get a chance to put in our requests and have some sign that they’ll be evaluated with an interest in product improvement!

    Regards,

    Brian

  78. Seth Gorden says:

    I watched the video showing the features, and I’m currently downloading the feature beta.

    I must say that after an introduction to Windows Forms and C#, either option seems elegant or simple compared to the MFC I’ve written in the last couple years. But after seeing the new features, I’m definitely going to develop my next multi-doc application with it. One of the features I have contemplated writing manually is the tabbed multi-doc selection. Now that it’s in the feature set, I have no reason to re-invent the wheel.

    Thanks for all your hard work.

  79. vcblog says:

    Hello

    Re: Saturday, February 09, 2008 1:38 AM by Seth Gorden

    And feel free to write a post on your experiences with the new MFC functionality once you have had a chance to use it (either here or on Pat’s VC Blog posting) – we would love to hear your thoughts.

    Thanks

    Damien

  80. Pat Brenner says:

    Hi Mr.MFC,

    Re: disabling a menu button menu item,

    I have opened a bug and will be investigating this issue.  Thanks for the report.

    Pat Brenner

    Visual C++ Libraries Development

  81. Radzi says:

    I’used MFC very long time ago and moved to wxWidget – open source – and found out that the vibrant community and contain all your C++ needs. Sockets, Compression, Thread, Docking (see wxAUI), etc. It’s MFC-programmer friendly too and cross-platform!

  82. AndyB says:

    "Also please consider having an analyst study the time required to use the current IDE compared to VC6. For instance adding event handlers takes forever compared to the ClassWizard, which wasn’t great itself."

    I seriously second this, some of the usability of the IDE is lacking and could do with a bit of a service. I know everyone and his dog has been involved in C#, but now’s you chance to fix all the things you didn’t have time to implement completely – getting something in is important, but polishing it reaps serious dividends.

    Similarly, the MSDN library – please make it work right with content, so I do not have to see all the .NET libraries. Its a bit like the issues with WinCE always popping a result no matter what you searched for a few years back.

    Otherwise, I’m really looking forward to working with VS2008 and native C++, keep up the great work!

  83. Gordon Hogenson says:

    We added a "Native Development" filter in VS2008 which should help separate out the .NET content.

    There is certainly much more that could be done to improve content scoping, but at least this is a small step in the right direction.

  84. Svante says:

    Posted this in Visual C++ Futures but maybe belong here instead?

    Anyway :)

    1: Standards compliance.

     Standards compliance has improved over the releases, thats great and please continue to work on that.

    2: Tr1 support.

    3: Option to export all symbols from dll file project.

     The linker in mingw (linux enironment for windows) support this. No lib file at all is generated when you use this option, only a dll file. You link directly against the dll.

     How many projects do you actually know about where individual methods/functions/classes are manually checked to see if they should be exported or not? Most companies I know about export everything, always.

     __declspec(*) is a ugly non-c++standard hack, please give us this option!

    4: The help, in my opinion, is substandard. I know there are a help improvement project running and thats great, hope the result is good. Standards functions before mfc/windows specific ones in my opinion.

    5: IDE is slow.

     Has gotten even slower in every release since VC 6.0.

    6: Dependancy: Arbitrary filetype to arbitrary filetype with a arbitrary tool, ugh.xyz -> stuffbuild.exe -> ugh.123.

     We know about msbuild but are there a reason why one can’t add a simple filetype in the IDE and specify a outfile file extensionname and tool to build it? VC could do datestamp check to check if rebuild is needed.

     It was a long time ago only source files was used in software development, these days there are all kind of stuff to build. It’s not optimal to have fully external systems for this.

    7: Deployment:

     It would be nice to have a option to automatically copy in all dll files used by a something.exe project to the folder the something.exe file is generated in.

     It’s akward and error prone to manually handle this. Deployment support in general is lacking.

    8: Side-by-side Dll files.

     Fix it or remove it, or explain to us what we do wrong if we have misunderstood the whole thing. Causing a lot of problems.

    9: Intellisense:

     Don’t really work since it’s slowing down the whole computer almost to a complete stop. Don’t parse things the same way the compiler does.

  85. vcblog says:

    Hello

    # re: Visual C++ Libraries update Tuesday, March 11, 2008 10:46 AM by Svante

    Posted this in Visual C++ Futures but maybe belong here instead? Anyway :)

    I saw your posting in “Visual C++ Futures” first and posted a partial reply there: http://blogs.msdn.com/somasegar/archive/2007/08/08/visual-c-futures.aspx#8183031

    Thanks

    Damien

    Visual C++

  86. Eric Jones says:

    I really like the look, feel, and experience of the new MFC updates!  I can’t wait for the release;

    However, I did think there is still one control that should have been included:

     A grid control for spreadsheets within dialogs

     the software we develop uses spreadsheets in more dialogs than dialogs without them– with their own buttons within them.  They look a little old fashioned because the SS controls are not mapped with other buttons. and they aren’t as easy as I think they could be.  I’m sure MS could do a much better job than the current SS control we use.  This would also allow us to dynamically create buttons (say if there is 5 points, we can have a row of controls and text for 5 points).

  87. John Monahan says:

    At last support again for C++/MFC.  I really don’t understand why it took so long for MS to realize how much people need it. Just the ammount of code alrady written alone would require such support on new systems.

  88. Antoine Dubuc says:

    It would be nice if we could have access to the Ribbon example shown in the Channel’s 9 video. For example, how do you program your images for your Ribbon’s elements? This is not documented and needs to be please! :)

  89. Ruby Web says:

    Thank you for the update.

    This version is stepping in the right direction it seems, and any additional features that it now lacks, could be easily included in it’s next update. I agree with the point that it needs to improve content scoping and have a control grid for spreadsheet within a dialog. This would make life easier in terms of content validation and data processing.

  90. Srinivas says:

    Thanks for not forgetting the language that drives the software industry’s innovation!!!

    Srinivasa

  91. I have lost my Microsoft Visual C++ Library need to reinstall

  92. need my C++ library Visual updated was lost