I have a feeling that this is a pretty silly and basic question, but I've been struggling with this for a tad too long today. I am attempting to make a shell extension for Windows following this guide (as well as several others that I have stumbled upon, but that one is the most notable). The issue is that they all start off saying "Run the AppWizard and make a new ATL COM program." However, these are the only project wizards I have in my Visual C++ 2010 Express.
Where can I find this magic project template? Even Microsoft seems to think I should already have it.
AFAIK frameworks MFC, ATL possibly others are not part of the Express edition, to have them you need one of the non-free versions. but there are some interesting links
Related
I am a beginner learning Visual Studio 2019 Community. Specifically MFC C++.
It is challenging as I am struggling to find good reference material and examples. Youtube has been very helpful for tutorials and examples. However, all the information I have found are using earlier versions of Visual Studio which are not a step by step process. I have found myself doing additional research or experimenting to find the same tool used in the example.
My current issue is the example creates a new class with the base class type of "CFormView". However no such value exists in my version of Visual Studio.
With that being said. I have two questions.
Please advise on how to create a CformView class in VS.
Is there any good quick learning guides for MFC in VS 2019? It would be great to have tutorials.
Thank you in advance.
VS2017 and VS2019 have become difficult development environments to continue program development with MFC/ATL.
If you want Wizard-guided development as you've seen in previous books and resources, the best shortcut is to go back to VS2015 and port the results to VS2017 or VS2019.
I have similar answers to similar questions several times.
For example, see these answers and their links.
How to add database to MFC project in Visual Studio 2017?
I am missing the Add new item Add "MFC Class From Typelib" in VS-2019
The big ATL wizard misery.
Deprecations - Visual Studio 2019
Add ATL Simple Object in Visual Studio 2017
Changes to Project Templates and Code Wizards in 15.3
Visual Studio 2017 version 15.3 Release Notes
This question already has answers here:
Is MFC only available with Visual Studio, and not Visual C++ Express?
(2 answers)
Closed 9 years ago.
I'm developing with an API and the API requires the afxsock.h among other afx... headers. After searching online, it seems that my VS Express isn't enough, so I looked to purchase the product at microsoft. Unfortunately it's 700$ and as a beginning programmer, it makes no sense for me to drop that on 1 project which I am using to teach myself c++. (I.e. I still don't know if I want to program long term in C++ or another language).
In any case, I was wondering if there was some sort of work around to get the afx (or more appropriately the MFC) files?
Note that I have Windows 8, Visual Studio 2012, and I've downloaded the Windows Development Kit for Windows 8, but still can't compile because I'm getting missing afx errors.
The AFX prefix stands for Application Framework Extensions, which was the original name for the MFC (Microsoft Foundation Classes) libraries. The file names were set in stone before the name was changed to MFC, and it was too late to change them.
So you need MFC in order to use those headers. Unfortunately, the Express versions of Visual Studio do not include MFC (or ATL). You can only develop MFC applications using the Standard, Professional, or higher editions of Visual Studio.
If you are a student, you have a couple of great options:
You can can join Microsoft's DreamSpark program, which is free to students and entitles you to some great free downloads, including VS 2012 Professional, VS 2010 Professional, and recent server versions of Windows.
Alternatively, you can join the IEEE for a very low cost. The
IEEE student membership entitles you to download many Microsoft tools, including the Ultimate editions of Visual Studio. See this page for more information. (Although that page mention VS 2010, VS 2012 is actually available.)
Otherwise, you will have to either buy Visual Studio Standard/Professional outright, or join MSDN.
Alternatively, you could use the winsock2 API, which is part of the Windows SDK rather than MFC. Get started with the documentation here. The Windows SDK is what you're getting when you downloaded the "Windows Development Kit for Windows 8". It includes everything you need to link to native Win32 libraries, but it does not include the MFC framework.
In addition to the IEEE "student membership" option that someone else linked to, you may want to consider Microsoft's BizSpark program which will give you access to more than just Visual Studio. I do not know if you qualify for it, but it's worth looking into.
With that said, it's time to step onto the soapbox and add some commentary: I understand the problem of API of choice having a dependency on MFC, but realistically speaking developing a trading program is neither particularly easy nor a good place for you to start. In addition, starting with MFC is probably not a good idea unless you want to specifically focus on becoming an MFC developer. If you are set on C++ you would be better served focusing your efforts on learning C++11. Or at least learning it first. Once you are comfortable with that, then you can focus on learning GUI programming using any of the many frameworks available.
Just my $0.02.
i've been googling before posting this but i havent been able to find anything on the topic.. yet i dont think its a very tricky one so please forgive for posting :o).
for a new job i am getting into C++, and following some tutorials. in particular one is about MFC, it shows how to create a project , selecting MFC application and so on. So, i installed Visual C++ Express 2010 on both a vista and a Win 7, and both time i had the same issue: when i go to new project , I have no "MFC" menu . some screenshots from that tutorial , and from some other on Visual C++ 2010 clearly show that it can be there. to be more specific, on corner left I have "installed templates" , then "Visual C++" and "CLR", Win32" and "General" , no MFC.
as these are "installed templates", i guess i should have to install it, but i found no clear indication on the topic; from what i found it should more or less be there from the beginning ... i also found a way to add MFC DLL through creating a Win32 application, but it doesnt seem its exactly the same thing .. I spent also some time on the menus of Visual C++ but did not find any clear way to add new templates like in Eclipse...
Well, I hope I made myself clear, i think this is pretty basic but if anyone could give me a hand on that one i'd greatly appreciate.
Cheers
Vincent
Visual Studio C++ Express does not support creating MFC applications.
If you don`t mind the leaking of unicode support, you can downlaod the visual studio 2013 express for desktop and install the free mfc mbcs supportfrom microsoft.com
I searched around for the answers to these questions, but I have had little luck. So, I thought I would post them here to get some clarification. If this is a duplicate, please let me know, and I will close this.
Okay, with that said, I would like to begin learning C++. I come from a C# background and I have a great respect for Visual Studio and what it can do. Now, my question is. How well does Visual Studio's compiler work for C++ as opposed to a non-Microsoft version (such as MinGW)?
My thing is this. I have nothing wrong with Microsoft, but I would really like to learn C++ in a "pure" form and not scewed by any particular implementation. How reliant is Visual C++ on the .NET Framework? Can a "pure" C++ application be created through Visual Studio without any .NET usage or overhead? Does the Visual Studio compiler compile C++ into CIL like it does with C#/VB, or does it compile it all the way down as others do?
Thanks for any help anyone can provide!
The Visual C++ compiler will compile C++ code into standalone EXEs that have nothing to do with the .NET framework.
The only way to get the .NET baggage thrown in is to compile the C++ as "managed".
If you create a new project (File|New|New Project) Then choose "Win32" from the Visual C++ submenu in the project types and choose "Win32 Console Application" Visual studio will create a simple project with a couple of source files that will compile to a little executable.
Most of the time, Visual C++ is very similar to other compilers. Avoid #pragmas, microsoft libraries (MFC, ATL) and you should be fine.
Edit (thanks Cheeso) - Documentation of where Visual C++ diverges from standard.
In general I would advise using boost libraries for threads and networking because they work on many platforms (i.e linux). Also if your code can compile in GCC and Visual Studio then you are doing a good job keeping it portable.
The most recent versions of VC++ have become significantly more compliant to the C++ standard, so it's not really an issue to write "pure" C++ using Visual Studio, presuming that you stay out of the Windows API, COM+ and ATL. In fact, the documentation with Visual Studio is very rich, with details on the standard libraries and the STL, so it can help you learn a great deal. It can't teach you everything, but it's certainly loaded up with a wealth of information that is portable to any compiler and it is very easily accessbible inside the IDE.
If you create a new solution you should choose new Win32 Project, or Win32 Console Application, and check the 'Empty Project' option. Then you can add a main.cpp file, and add your standard C++ code.
If you like Visual Studio, go ahead and use it to learn C++ -- I haven't used the very latest version, but even the previous one was pretty standards-compliant, C++-wise, and I assume the latest one can only have gotten better. You can have many different kinds of project in Visual Studio, including "console apps", which are the "plain vanilla" kind you could make on any platform, and also many other kinds, such as, windows apps using the good old win32 api, ones made with MFC or other frameworks older than .NET, .NET ones using "managed code", etc.
Just make sure you always work in a "console app" project, and you'll be operating pretty closely to how you would be on other platforms and/or with other C++ IDEs.
If you limit yourself to writing ANSI C++ compliant code then what you write in VS will work in other compilers, until you have to interact with a graphic interface or IO. Then you need to make certain that you are using something that is portable, such as OpenGL, and not DirectX.
To set your project the steps here may be useful:
http://bytes.com/topic/net/answers/447572-strict-ansi-c
Microsoft Visual Studio 2005 comes with a very good, C++98 standard compliant pure C++ compiler. If you are interested in pure C++, don't forget to disable language extensions in project settings and you are good to go. Nobody is going to force you to use .NET framework, MFC or anyting like that. Just pure core C++ language and C++ standard library.
Of course, just like any other compiler, it has known non-compliance issues, but in general it is, again, surprisingly good. Older versions of their compiler (MS VS 6.0 specifically) suffered from many non-compliance problems and could not even compile its own header files with language extensions disabled. In 2005 version they fixed a lot of these issues.
After creating a standard Win32 project, you can turn up the compliance a bit more. On the project properties sheet, there's a C/C++ category, with a Language entry. This lists a number of cases where VC++ can differ from the standard. Here, you'd want to turn OFF language extensions, and turn ON "wchar_t as built-in type", "for-loop conformance" and "RTTI support".
I'm learning C++, and I want to know from those who are very good developers now: What is the best IDE, Visual C++ 2008 Express or Eclipse Ganymede with CDT? Remember that I'm using Microsoft Windows Vista Ultimate. Thanks!
The book that I'm reading is from Deitel: C++ How to Program, 5/e, because I don't know if the code of the book supports Microsoft Visual C++ 2008 Express.
I'm using both regularly now.
Visual studio is easier and more user friendly. I have issues with it though. They force you to do a number of things for reasons the benefit Microsoft and not you. It's free so you can't complain that much. Support is non existent but there's google for help.
Eclipse Gallileo does some difficult things startlingly well, but does some simple stuff startlingly badly. Such as when you compile if there's an error you get no visual indication. You have to open the problems window to see the errors. DOH! Eclipse is nearly as good as visual studio overall and is one of the best when using linux. The new version of the debugger has some very nice new features as well. Support is poor to non existent but there's google for help.
I tried codeblocks. The support was not very good to rude. I found it difficult to do anything serious with.
If you're working on Windows, MSVC++ 2008 Express is probably the one to go with, since it's the platform's native compiler. If you don't have any experience with Eclipse already, definitely go with MSVC. I've found Eclipse to be very counter-intuitive, but that's me, you may love it.
I use codeblocks :) I like it a lot actually. Its interface is really easy to use.
I am having issues with MSVS right now which I will be posting a question about here in a few minutes.
Either will do you fine at this stage, but on balance I think you will find VS 2008 Express a little more straightforward unless you have much Eclipse experience.
That said, once you begin developing your OS you may find that you need to upgrade to the full (non-Express) version.
I use both Visual Studio 2005 Pro (at work) and Eclipse CDT (for personal projects).
I do prefer to use Eclipse because I program meanly Qt applications on Windows with it. The Qt integration module is really good (and available freely at http://qt.nokia.com/).
Once you are there, you could give a try also to Qt's lightweight IDE: Qt Creator.
If you are going to do C++ GUI programming, I think you should definitively go with Eclipse CDT and the Qt Integration plugin. I've programmed (and suffering) several years of MFC before learning Qt and I will never go back!
Hope it helps!