Jump to content

Where to move from console programs and Windows Forms apps?

skillz22

I am a beginner to programming and I have a bit of basic experience in C# and C++ (I was told to pick one and stick with it, so my preference is C++). So far I have made a first proper program using Windows Forms and C#. Aside from using Windows Forms (which is not natively available for C++), what is a simple way to move on from console applications? I thought a solution might be using OpenGL, so I followed a tutorial online until I had a working solution on Visual Studio. From here I discovered that I would have to learn pretty much a whole new set of functions just to work with OpenGL (then I kind of just gave up on the idea of using OpenGL).

I really like the way that Windows forms has UI design, It is simple to use and get the hang of, and in most cases, it gets the job done. However, I found it lacking in areas such as program installation (The install process of the program that I made) and customizability of UI elements such as buttons.

My question is, what should be the next logical step for me in C++? I would prefer something that doesn't require as much effort as OpenGL to set up inside Visual Studio. Should I look into DirectX?

Thanks!

Link to comment
Share on other sites

Link to post
Share on other sites

You don't want to be using such low-level APIs such as DirectX and OpenGL directly, especially for something that doesn't need H/W-accelerated 3D-graphics. There's a reason why so many games use things like e.g. Unity or Unreal Engine -- those things allow the developers NOT to have to directly use DirectX/OpenGL, all that low-level work is left to the people making those engines and the devs of the games can use simpler, higher-level APIs to get things done instead.

Hand, n. A singular instrument worn at the end of the human arm and commonly thrust into somebody’s pocket.

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, WereCatf said:

You don't want to be using such low-level APIs such as DirectX and OpenGL directly, especially for something that doesn't need H/W-accelerated 3D-graphics. There's a reason why so many games use things like e.g. Unity or Unreal Engine -- those things allow the developers NOT to have to directly use DirectX/OpenGL, all that low-level work is left to the people making those engines and the devs of the games can use simpler, higher-level APIs to get things done instead.

Ok, thanks for the info! Seems obvious, but it's not something I thought of.:) I'm definitely not making games, just programs, and I wanted the graphics libraries to make a decent looking GUI. What would you recommend?

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, slickboss21 said:

Ok, thanks for the info! Seems obvious, but it's not something I thought of.:) I'm definitely not making games, just programs, and I wanted the graphics libraries to make a decent looking GUI. What would you recommend?

I, quite frankly, don't know. I haven't done Windows-programming in well over a decade, nor have I used Visual Studio, either -- I mostly do headless daemons and stuff under Linux. I only popped in to say not to waste your time on OpenGL/DirectX, that won't do you much good.

 

Perhaps take a look at Packt Publishing's Mapt-service and search for Windows-programming stuff? They've got a lot of very good videos and books there and you just might find something that suits your needs, so you can continue learning.

Hand, n. A singular instrument worn at the end of the human arm and commonly thrust into somebody’s pocket.

Link to comment
Share on other sites

Link to post
Share on other sites

have you looked into Qt ?

C++ UI framework, widely used by even the biggest names

"You know it'll clock down as soon as it hits 40°C, right?" - "Yeah ... but it doesnt hit 40°C ... ever  😄"

 

GPU: MSI GTX1080 Ti Aero @ 2 GHz (watercooled) CPU: Ryzen 5600X (watercooled) RAM: 32GB 3600Mhz Corsair LPX MB: Gigabyte B550i PSU: Corsair SF750 Case: Hyte Revolt 3

 

Link to comment
Share on other sites

Link to post
Share on other sites

28 minutes ago, cluelessgenius said:

have you looked into Qt ?

C++ UI framework, widely used by even the biggest names

I'll have a look into that, thanks!

Link to comment
Share on other sites

Link to post
Share on other sites

3 hours ago, slickboss21 said:

Ok, thanks for the info! Seems obvious, but it's not something I thought of.:) I'm definitely not making games, just programs, and I wanted the graphics libraries to make a decent looking GUI. What would you recommend?

for C# you have a couple packs that already exist that have UI overhaul. Syncfusion, Telerik are just 2 big one that are not free btw.

You can make a full photoshop interface if you like. All you need is picture box and bind the click, mouse hover events to make your fancy visuals.

Create user controls to create custom look object or override the whole controls.

Link to comment
Share on other sites

Link to post
Share on other sites

If you're doing interface development via C++ Qt is where you want to look. You can download and use the open source version for free. You can also use GTK via Glade but I'd suggest going the Qt route as its much better documented and more widespread.

 

Personally I'd use an IDE such as Qt creator (free w/ Qt) or something like Visual Studio Code and using the CMake build system. I'd avoid tying yourself to using Visual Studio projects.

Link to comment
Share on other sites

Link to post
Share on other sites

Open GL is just graphics. You’ll need a windowing API like SDL. 

 

SFML is another alternative but I’m sure QT will be fine. I don’t know what QT is made for but I trust the other users. 

Link to comment
Share on other sites

Link to post
Share on other sites

Also consider something like electron. While not the most common project structure, you can use node addons to write all your business logic in C++ and have your front end be pure react js (which lets you get a modern look)

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to comment
Share on other sites

Link to post
Share on other sites

On 12/14/2018 at 4:09 AM, slickboss21 said:

Ok, thanks for the info! Seems obvious, but it's not something I thought of.:) I'm definitely not making games, just programs, and I wanted the graphics libraries to make a decent looking GUI. What would you recommend?

There are plenty of good featured C++ GUI out there. You do not need to rely on graphics APIs. My personal favorite C++ GUI is qt5 which is like the grand daddy of all modern GUI APIs. 

 

You directly call on openGL API if you need something 3d for your qt application too. 

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

I still recommend to stick with native controls. Qt - while it looks awesome - adds a metric shitton of dependencies (= overhead), inherently enforcing you to distribute a bunch of DLL files with your application for license reasons.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×