User interface for c++ - visual-c++

I have a program in c++ on visual studio'10. And have decided to create a simple user interface for it on VS'10
My question is, confusion raises when choosing among MFC, CLR, Win32 etc. which one should I go for implementing my UI?

Given the constraints of your choices and the fact that you've already chosen C++, then I would go with MFC. Had you chosen C, I would have told you Win32. Had you chosen C#, I probably would have recommended WPF.

Related

Combining c++ and c# projects in Visual Studio express 2012 for Windows desktop (windows 7)

Been using VS2010 express. Writing in C# which i figured was a good middle step towards object oriented languages. One thing that has made my code somewhat repetitive is the inability to use multiple class inheritance in C#. I.e. I can't say class A inherits from class B and class C.
c# is great because you can quickly and easily get windows with buttons textboxes and dials up and running. This is not available in C++ in the express version since the MFC libraries are not included.
Now, I have thought of just desinging a C# front end which saves parameters to a file then execute a c++ which reads the file, runs and then saves a file which i open with another(or the same) c# backend exec to read and play ard with the results. But this would make it cumbersome always executing the whole sequence again if you want to change something. Not to mention debugging, will probably need to have to instances running.
Reading on of the Visual studio 2012 Express for desktop announcment, it stated that "You can also combine C++, C#, and Visual Basic projects into a single solution, making it easy to write a single application using any of the available languages." http://blogs.msdn.com/b/visualstudio/archive/2012/09/12/visual-studio-express-2012-for-windows-desktop-is-here.aspx?PageIndex=3
Now I would be happy with that, after all I dont expect and dont need at this stage to do any wizbank stuff i.e special button functionality/design which is easier and provided with the MFC in C++.
My question is: Has anyone tried this in Visual Studio 2012 in the Express for windows desktop version in Windows 7''? I.e can you combine a c++ and a c# projects which interact, trace the code form one project to another when debugging for example? Are there any special restrictions? I mean if its combining executables only its not much use, but i expect its more than that, but how much more? For example, can an object designed in C# instanciate an object designed in c++ pass it a reference to other objects like classes which hold inputs and outputs or data which are proccessed in the c++ class and still accesible in the c# code to display results etc?
I am asking this before downloading the new express version because I expect it will set me back a couple of months since going from C# to C++ i would think is like going from Visual Basic to C. I wouldnt want to get into all the trouble (i dont mind really but it would be huge step back) to find out i cant "seemlesly" integrate a c# front end with a C++ proccesing solution.
You have three options for interfacing C++ with C#:
pinvoke: You specify function signatures in C# and give them an attribute specifying what DLL they reside in. This is fairly painful to do if you need to pass around any complex types at all.
COM: A C++ DLL would implement a COM object called by the C# code.
C++/CLI: Allows mixing of managed and unmanaged C++ code in a single C++ project. It is very nice for interfacing with other libraries but, in VS 2010 at least, lacks helpful features such as intellisense. If you really wanted to go this route, I would write three projects: Your core C++ code as a static library, your C++/CLI DLL to wrap it, and your C# application.

Wrapper for converting Winapi and MFC code to equivalent linux versions

I'm working on a wrapper to compile c++ code having MFC and windows API calls into their linux versions.
The c++ code has the following characteristics:
No GUI component present.
Has a maximum of about 10 MFC classes used mostly for string parsing.
It has lots of windows specific constants used such as HINSTANCE, LPCTSTR and so on.
I'm not allowed to compile using wine in linux. Till now i've come across wxwidgets, it seems quite vast, i doubt if i'll be needing all it's components.
Please share your ideas in creating the wrapper, is there any specific code that is already available which does this task or part of this task ?
There is no automatic or even semi-automatic way to convert an MFC application to wxWidgets. It is, of course, perfectly possible to do it and many, many projects have gone through this transformation but you just need to do it.
See MFC page of wxWiki for some starting points.

what to substitute for TThread

I have source code for USB communication ("USBThread class") written in Borland C++ and uses Visual Component Library("vcl.h").
Now my task is to port that to Visual C++, because we did not buy Borland C++.
But this "USBThread class" has inheritance from a base class in "vcl.h", called "TThread".
May I ask , in Visual C++, What kind of base class I can use to substitute "TThread' as new inheritance source?
The original code uses "WaitFor" and "Terminate" methods coming TThread,
I do not know how to implement these two menthods with Visual C++.
Thanks!
This is likely to be a difficult exerice imo but it looks like Boost.Thread using join for WaitFor and interrupt for Terminate would get you started.
I am basing this on review of the docs for VCL found here. I say this is likely to be difficult because VCL may have behaviour that is undocumented or otherwise unexpected.
Although you could translate the VCL's TThread class into C++, it would not work very well because it relies on some Delphi semantics that simply do not translate to C++ at all (in particular the TObject::AfterConstruction() method). You are best off simply re-writing USBThread to use Win32 thread functions directly, namely CreateThread() and WaitForSingleObject(). For Terminate(), you simply set a bool flag somewhere that your thread procedure can look at periodically and stop its work when set to true.

What's the most cross-platform friendly coding language? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
Let's say I want to create FPS game, let's say clone Crysis so everybody understand what type of graphics & performance I'm after. What's the best code to write this game with so it's as easy as possible to port it to all the common platforms? Of course I want the application to feel and be native to the platform. This also means that it should be easy to take advantage of Snow Leopard's new features like OpenCL and Windows 7's new features. I realize that GUI has the written separately for different platforms and that's not a problem.
So my question is that what's the best language for the job. I'm not looking for one-for-all solution but more like language for the core. I guess one way to put it is to say that what's the best language if you need to port the same program to Windows, OS X & Linux? Java is out of the question.
C (and now for some padding to reach 15 chars)
Have you ever seen the Blues Brothers? In the movie, Jake and Elwood go into a hick bar to do a gig and ask what sort of music they like, to which the woman behind the bar answers:
We have both kinds: country AND
western.
What has this got to do with this question? Well, you want to create high performance 3D graphics and you're asking what language to use?
We have both kinds: C and C++.
You probably want C for your lower level graphics performance, either the variant of C89 that Visual C++ supports, or use MinGW and gcc C99 ( VC++ 2008 doesn't support declarations in for loops in C99 code, which is very annoying, but then they didn't do that right in C++ for years ).
Admittedly, if you're taking GNU with you and running full-screen with your own GUI then it's not really cross platform any more.
You also probably want either Lua or Python or another scripting language which plays well with calling C to give a sensible higher level way of controlling the game.
C++. You can avoid millions of "if #define"'s for platform dependent things and instead use inheritance (derived classes for each platform and client using/knowing the abstract base class). A few exceptions to this can be made for the performance critical parts.
There are also lots of libraries for cross-platform development.
I really recommend using Lua for any scripting. It is an ANSI C library so that means that a: it can be compiled in (at least most) C++ compilers, and: if there's a C compiler for the platform then you can use lua. It allows for significant extension of flexibility of your game and if you want it will let your players customize it too!
Java is probably one of the easiest to learn, personally. Java though doesn't have have that great of a graphical system, it needs more code to support the graphical display if you are coding "GAMES," if you're going to code a website though choose JavaScript, CSS, and HTML/5. Or use only one of these languages normally best to choose two that best fit your comforts... =) For an FPS, I would recommend for beginners to use Java, if you have a good sense in what you want to create and it is a more complex game then use C# or C++, just because it uses less hardware if you want to make more complex games to run on multi platform.
Whatever you use you're going to have to write platform-specific code. Languages like Java or other interpreted languages (Python be my personal preference) are going to allow you to use a lot of commonalities. However, since it's not a quick and simple project, I'd suggest </intelligent-looking-padding> C or C++.
Edit: GUI doesn't necessarily have to be written from scratch for every platform. Check wxWidgets.
Most cross platform games are written in C++, because it is very good - performance wise; and its more user friendly than C. Games need maximum speed & efficiency!
You can hide away platform specific stuff behind certain abstractions and API's that you write so that you can port it easily. You can also use a cross platform framework such as Qt or wxWidgets for the window & GUI elements. Adding a scripting language to non critical parts is also nice. :)
As most have noted here, you are almost certainly going to need C/C++ for your graphics in the end particularly for your high performance (graphics) requirements.
However there might be an opportunity to develop the "core" as you call it, in a scripting language which in turn is easy to embed within a C/C++ application. In which case, the top 2 scripting languages to look into would be Lua and Tcl.
Lua in particular is used in WoW among others I'm sure. Tcl on the other hand has more "batteries included" (libraries).
I'd recommend C++ for large cross-platform projects as well. But I think what's also important are the build-tools you use. For example SCons or CMake can create project files/makefiles for most compilers under Windows/Linux/MacOS.
C is a good language, but generally you want an object oriented language for programming game. If your looking for speed, go with C++, but if you don't have much programming experience, go with python. look into the sfml and pygame libraries.

Why public ref in c++ class definition

First of all I want to make clear that 'm all new to C++, so this might be a simple and somewhat obvious question. In the C++ book I'm reading called C++ Primer, a class is defined by writing:
class classname{
public:
private:
};
However, in VS2008 the compiler didnt like this. But by adding public ref before class, as in:
public ref class classname{
it went through in the compiler. Can anyone please explain what the difference is between defining only with class and with public ref class? I would really appreciate it.
The ref syntax is a Microsoft extension used only in Managed C++. By the sounds of things you have flicked the /clr compiler switch on by mistake when creating your project. If all you want to do is to create real C++ programs, then you will want to revert that.
You're reading a book call C++ Primer which teaches the C++ programming language, whereas you're attempting to create a program telling VC++ the code is in C++/CLI, a different programming language....
You (edit: and other users) tagged this question with:
Two programming languages: C++ and C++/CLI,
One commercial Integrated Development Environment (IDE) by Microsoft: Visual C++, which lets you program in three different languages (C, C++ and C++/CLI). In the post you mention Microsoft Visual Studio 2008, which is a superset of Visual C++.
One set of language extensions: Managed C++, which has historically refered to quite a few different things and, frankly, I'm not sure what it means now :)
However, your first goal should be to learn how to configure Visual C++ to program in the language of your choice, C++.
As usual, a good way to find an answer to this question is to type it in the "Ask Question" page and see which related questions are suggested. This is the best one, I think: compiling "standard" C++ in visual studio (non .net).
Are you learning the standard C/C++ language? if the answer is yes then that syntax is concerning the Microsoft C++/CLI language...
look at : C++/CLI
Try to use Eclipse with C++ extension instead. It cames with all you need to create and execute a STANDARD C++ program!
Eclipse download

Resources