client program mainly for windows ...

I want to make a client program that is supposed to work on all newer kind of windows operating systems (from w95 to windows XP). In the long run, I want the program to run on all kind of operating sysems that common people use, like BSD, linux, mac and so on, but first to the windows part.

      1) How do I make a windows-program that show up as an icon to the right in the bottom panel (where the printer icon and other icons are  ...)?
      2) How do I make the program GUI jump up when I double click it and how do I get it down?
      3) How do I make it contain a bunch of tabs in the top?
      4) Since I later on want to port this, would C/C++ be the best way of solving it? And how do I best separate the OS:spec parts from the common stuff?

A source template would be nice
Who is Participating?
_corey_Connect With a Mentor Commented:
I would probably suggest looking into something like Qt
AlexFMConnect With a Mentor Commented:
mh2Connect With a Mentor Commented:

1. Windows only: Look into the function Shell_NotifyIcon(...) in your MSDN.

2. Windows only: [take this with a pinch of salt, I'm not 100% sure]
    Keep track of your applications status, set a boolean variable when it is in tool tray state.
    Add a message handler for WM_LBUTTONDBLCLK
    Use ShowWindow(..) to display your window back in the normal state

3. Windows only: "In the top" I assume you mean along the top edge of your window? The Tab control should do the trick here, but if your window is not a dialog (drawn in GUI) you'll have to create it programatically.

4. Yes, C++ is your best choice here IMHO to be portable. BUT you must be _very_ careful not to use _any_ OS specific calls in your main application API, use only C++ standard calls and code (for example, don't use __declspec(property)). Unless you use a toolkit such as QT you will also have to make several indepedant versions of your UI, as the help given above by me is for Windows only. To be cross-platform, you will need to handle your tool tray differently (does your target platform even have the concept of a "tool tray" is a question needed to be asked?)

What you must do is seperate your application into business logic and GUI logic. The business logic must handle all functionality in your application. The GUI code must _only_ be an event processor, and must use these "business" classes to do the real work. This way you can build these "business logic" into a .dll/.so whatever and link it to your chosen front-end. So you make a front-end implementation in MFC, and one for say Linux in Gnome, both handle an event, say a form with data capture. Upon clicking say a "Save" button, they collect the data in the form into a standard object/format as defined by your "business logic", then pass this to an object in your common code for validation and saving to database.

As you can imagine, developing a truly cross-platform application is a tricky task. There is no one "source template" that can tell you how to architecture your application.
I think points should be splitted.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.