I was surprised to find that I am now a 2-million plus line programmer in C/C++.
I disagree strongly that C is useful only for “system programming”. But regardless of who is correct, I think it is irrelevant.
Learning C++ will teach you most of “true” C in the process, or at least most of it that matters in most programming tasks.
Borland C++ Builder and Delphi are neat and can get you up to speed fast, but many large companies still want to see MFC experience, not Delphi. MFC is less easy to use than Delphi, but equally as powerful, and there is a wealth of information, code samples, and free help available on the web. It’s extra effort, but worth it in the end, IMO.
I think the answer must be tempered by whether the goal is to learn programming for fun, or for work, or both. If it is for fun, then perhaps a local university or community college has a night class as an introduction to C++/MFC. If it’s for a job you already have, then on-the-job learning is probably best for that, although it may limit you in the future by confining your flexibility.
Here’s an idea - make sure you keep a notebook, either electronically or otherwise, of samples of your own code and free code of how to do key functions. It will greatly speed up your progress if you can say “OK…now, I need to read a JPG file and determine the length and width of the image…how do I do that? Oh yeah - I did that once here, let me C&P it…”
What I do in my freeware applications along these lines as well is develop a large class of common functions used in science and math, and some GUI programming and even IO functions. This base class I just copy into every new project I work on, and thus I start with a powerful toolkit available which I know works. So I never have to start from scratch anymore.