Newbie: Project Conversion

Hi all,

I am new to almost everything here

I am writing a professional application in Visual Basic 6. (A Realtime Financial Data Display Client) It’s been 8 years now and I am looking for a framework to rewrite whole thing in C++.

Basically it’s a MDI application having around 60 MDI Child Data Display Forms. These forms range from a Technical Analysis Form (with full indicator, trend lines, etc. support) to highspeed Transcation Views (very lightweight, pure virtual grids). The codebase is around 400 classes and 130000 lines.

My requirements are mainly:

  1. MDI
  2. User customizable Menus,Toolbars
  3. Runtime Language Switch
  4. Full Network support (HTTPS, IP, UDP, etc.)
  5. Custom Grid & SpreadSheet

I am already very much impressed from what I saw at JUCE. I know JUCE lacks some of my requirements, and I am ready to write the lacking parts. I would like to hear your comments on the project. Can I rely on JUCE for the project which I suppose will take 1 to 2 years.

I am also new to C++, but have a friend as consultant that I can trust. So I will need some time to get fluent with C++ and JUCE.

Thanks all

First of all, staying nice and not commenting on VB, I worked with it near exclusively probobly 8 years ago, havn’t touched it since C++ focus. :slight_smile:

MDI would be easy to do in Juce.
User Customizable Menu’s, depending on the interface you want, can be quite easy, could be… interesting to write, but quite possible.
Runtime Language Switch? Elaborate?
Not even winsock is good for that; Juce just has things for TCP single transactions. I’ve recommend ha… hak, ha-something, can’t remember the name, I can find it if needbe. It is multi-platform as well.
Custom Grid and spreadsheets, depending on the functionality you want I have something simple for displaying and simple editing already, but there is no dedicated one created yet. Can create it of course.

First of all, let me say, compared to work with MFC and the likes, Juce is heaven, you will enjoy its ease of use and power. :slight_smile:

JUCE is very easy to get started with for a C++ noob. I got started in november, and today I’m kicking ass like Chuck Norris.

The event / message setup is easy to use. Its easy to make your own graphical components.

The boolGrid component I wrote for my first VST effect:

(Works like an array of checkboxes) is roughly 70 lines of code if I recall correctly.

So, yes, JUCE is more awesome than Seven of 9’s chest.

So, I am really excited to start with JUCE.

I looked at QT, but hit a wall at their MDI implimentation. They draw the caption themselves, no way to override. Thus I would have to write the whole MDI support myself.

By the way, Runtime Language Switch = Changing the interface language at runtime.

Probably I will begin with MDI support, any suggestions for a JUCEy way?

I also need a hierarchy of grids. Pure virtual at the bottom, all the way to full featured spreadsheet (with functions as such…).
I will also need DDE support, my clients like to get realtime data at Excel.

You see I will need a lot of stuff, any help and suggestions will be very much appreciated.

Actually, before you commit to this, there are two things about JUCE you should think about, if you haven’t already.

A) Look and feel, is customizable, but it can be a lot of work and mimicing native windows would be hard to say the least. The price of crossplatformyness.

B) Font rendering, Juce does its own and it is always antialiased. If you are going to put lots of text on the screen in a smallish font, this may be a show stopper.
With low screen resolution (1028x768) and a fontsize below 10pt , you have a problem.

With regards to MDI: I think a window is just another visual component in juce. So, you could make an MDI child by subclassing the window class and restricting its render area to the size of the parent.
Toss in a nice bevled parent window background, and the MDI metaphor should be clear.

Yes, and as for DDE support, remember, Juce is multiplatform, how many platforms have DDE (and why doesn’t Office use something that makes sense). Would be better to store that info in a database and retrieve from there, would be faster, more efficient, multi-platform, etc…


I don’t have to mimic native, my forms are already nonstandard. They are mostly customized Grid based forms.

But font rendering may be a problem, I have to check and see, actually my clients generally have 1024x768 and 8pt fonts.

Only problem with MDIClients window can be z-order managment. But that shouldn’t be too hard I suppose.


Unfortunately clients like DDE with Excel, so at Windows, I will have to support DDE.

I just checked the fontsize, what I call 8pts, JUCE calls 16, so no problem there.

I just started to read the Demo source, it’s just beatiful, I couldn’t imagine C++ could be so readible. Most of the C++ code are horrifying. (If you look at most of the C++ frameworks, they are terrible to read.)

I plan to start with localization and Toolbars, then MDI. It will be exciting. I hope to share my components with you (at least for a second-opinion).

I am currently planning for the resources, I have about 2000 strings localized in 3 languages and about 600 icons. I want to have these resources in a platform independent way. I figure that I can use png format for images.

To include the resources in exe one way can be the binary form used by Jules. Is this the preferred way or can you suggest different methods?

I also plan to write some utilities for Translation of the strings to new languages and a Toolbar Editor to easily customize Toolbars and PopUps. There are over 100 popups which are all handcoded know. It would be best to read these from a config file that is maintained by support staff.

By the way I just cann’t understand why JUCE is not much known around? I asked about JUCE at JoelOnSoftware forums and no one replied. I thnk this framework deserves much more popularity.

Thanks very much - I’m sure Juce will get more widely known given time. It does seem to be picking up more attention recently.

The binary exe resource thing is pretty handy if you’re doing cross-platform stuff, because the same thing will work on all platforms, and it also makes it hard for the users to mess with your data.

And if you’re doing your translation work and think of any ways that I could improve the LocalisedStrings class to make it do the job for you, let me know!

Thanks Jules,

I use stringIDs for all GUI strings, your Localised strings class is easy to use but probably I will stick with using IDs mostly because string literals in the source are easy to overlook during the translation. When you use IDs it’s immediatly apparent.

I started to think about the Toolbar component. It will be similar to Menu but it has to host buttons, labels, combobox etc.

I plan to have a ToolsManager class which knows about all the tools, Toolbars, Menus, Popup Menus.

I use toolbars all around GUI, on the MDIForm, MDIChild forms, captions, etc. and allmost all options are controlled by Popup Menus. So, a good performing ToolManager is very important for me.

I am now reading the source code to get an understanding of the inner details. I never feel secure unless I know exactly what is going on, so I have a lot to read :slight_smile: