Slashdot Mirror


Simple Windows Development Tools?

fwc asks: "Over the past few years, I've been fortunate to be able to avoid writing a Windows GUI application, however this good luck is coming to an end. In the next few weeks, I need to write a fairly simple application which will need to display data received from a serial port in a decoded (and graphical) form via a Windows GUI. Unfortunately, my skills in this area are out of date, since I haven't written any GUI apps for close to 10 years. Because this program needs to be fairly small and easy to install, the use of Perl/tk isn't a valid option. What options do I have to build a small application on Windows, without a large learning curve?"

15 of 255 comments (clear)

  1. VB by ecklesweb · · Score: 5, Insightful

    Unless things have changed in the past few years since I played around with Windows GUI programming, Visual Basic is by far the easiest way to get a Windows GUI app off the ground.

    1. Re:VB by Fallus+Shempus · · Score: 5, Informative

      I'd agree from a complete programming novice
      but you've got a nice free choice (as long as it's not commercial code)
      if you have more experiance (especially C++)
      http://msdn.microsoft.com/vstudio/express/

    2. Re:VB by #undefined · · Score: 4, Informative
      what do you mean "as long as it's not commercial code"?

      there's no licensing restriction on visual studio express.


      4. Can I use Express Editions for commercial use?
      Yes, there are no licensing restrictions for applications built using the Express Editions.


      taken from here.
  2. Some options: by hummassa · · Score: 4, Informative

    1. Graphical IDE: (in order of my recommendation) Delphi (C++Builder if you are too much into C++), KDevelop, Eclipse or VB.

    or...

    2. You can hire someone (like me!! hmassa at gmail) to do it for you. :-)

    --
    It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
  3. Visual Basic by Sarlok · · Score: 5, Informative

    It's easy to learn and the GUI designer is also easy to use. What's more, with the new (2005) version, there is a free "Express" edition that you can download from Microsoft.

  4. Visual Basic Express Edition by PoiBoy · · Score: 4, Informative
    I'd recommend trying Microsoft Visual Basic 2005 Express edition, in part because it is free but more importantly because it comes with a very easy-to-use GUI designer and a wealth of online help. My understanding is that it's basically a stripped-down version of Visual Studio.

    I just started using Windows XP (out of curiosity) after having used Linux for the last six years, and I honestly have to say I've been very impressed with the development tools Microsoft makes available for free.

    --
    Sig (appended to the end of comments you post, 120 chars)
  5. TCL/TK by jmac880n · · Score: 4, Informative

    TCL/TK is small, easy-to-use, and portable over many systems.

    In addition, your entire program tree plus interpreter can be encapsulated using a starpack.

    1. Re:TCL/TK by Twylite · · Score: 4, Informative

      Kudos to the well-informed parent. Tcl/Tk is indeed an excellent solution. More below.

      But first ... Visual Basic is NOT the answer. The criteria were "fairly small" and "easy to install". For most Windows versions you'll have to distribute your VB application in an install package that includes the VB runtime DLLs or the .NET runtime (or get the end user to download them, which is a mission). If you're unlucky you'll have to distribute other MS DLLs like ComCtls as well. Find out more at http://msdn.microsoft.com/vbrun/ . Then there's accessing the serial port ...

      For a simpler solution, grab TclKit, a single-file Tcl/Tk distribution. Tcl is ridiculously easy to learn, serial port access is as easy as file access, and it uses Tk to provide a powerful GUI.

      You can put your scripts into the TclKit EXE as a resource, creating a single-file EXE distribution of your application. With UPX compression the resulting file will be around 1.2Mb (depending on what extensions you choose to use).

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
  6. Alternative.... by ceeam · · Score: 4, Interesting

    Ask yourself - how would you've done it on Unix? Well - Perl/tk may be not an option, but definitely you can write a no-GUI program to receive data from your serial port and store it somewhere. Then make a small web-server (plenty of options - no need to install apache or stuff) and serve your data in graphical form to a web-browser.

  7. Try Realbasic by Quiet_Desperation · · Score: 5, Informative
    I do mountains of Windows GUI crap to control my hardware designs via serial port and Ethernet. Realbasic makes it all easy and it's not as annoying as Visual Basic. Nicely object oriented. Even file i/o is OO.

    http://realbasic.com/

  8. RealBasic! by numbski · · Score: 4, Informative

    http://www.realbasic.com/

    Extra credit is that it can compile binaries for Windows, MacOS X, and Linux. I believe there's a demo version to try before you buy.

    If you're looking for completely free, unfortunately you may well be sol. KDevelop may be your only option as posted above, but I wasn't aware that KDevelop can give you win32 apps....?

    --

    Karma: Chameleon (mostly due to the fact that you come and go).

  9. Delphi is decent by teeheehee · · Score: 5, Insightful

    I can't vouch for VB since I try to avoid it as much as possible, but I worked with Delphi at my last job and recommend it as an excellent rapid GUI development IDE and language.

    There are lots of extensions to the component palette which are free (as in beer) and some that are free (gratis) which can be very helpful. I didn't do sockets programming but there are components for that, as well as for graphs. You might be surprised at how quickly you can pick it all up, it's quite intuitive.

    --
    "We are not always what we seem, and hardly ever what we dream."
    Schmendrick the Magician
  10. Java or .NET by miyako · · Score: 4, Informative
    Java with Swing is a pretty quick way to write a GUI. Swing is well documented on sun's website- both with APIs and tutorials available. It also has the benefit of being largely crossplatform (though given your specific task there will probably be some native code that would have to be rewritten).
    If you don't want to learn Java, or you would prefer something more native to windows, .NET is a huge step up from the old way of creating windows GUIs. I haven't used it extensively, but it seems to be largely well thought out and well documented (though I still vastly prefer Sun's javadoc to Microsofts .NET documentation). .NET has the benefit of being able to work with most languages you would want to program in.
    A few general suggestions if you're rusty with GUI programing that you might want to consider as well:
    • Don't use form builder code for actual code. While GUI builders can be a good way to get an idea of the way you want the GUI to look, in my opinion they end up producing really ugly code. It's generally faster and easier to just write it from scratch.
    • Sketch out the GUI. Even for a simple GUI it's difficult to design a GUI while looking at code unless you're really comfortable with both the API and with the type of GUI your designing.
    • Seperate Logic from Display. It's tempting to put little bits of logic in the GUI code, but if you're going to be supporting the code you're life will be much easier if they are seperate. Essentially you are writing two programs. The program that does the task (in this case, reading the data from the serial port and processing the data) and the program that displays the task. It's fairly reasonable to say that if your program is properly designed, you should be able to create a text based interface for the application in a few hours. (Yes, there are programs you can't reasonable run without a GUI, but the point is, seperate logic from display).
    • Seperate Logic from GUI code. It' bears repeating. I've seen a lot of programs where the author/previous maintainer put a small but crusial bit of logic in the GUI code. Later when re-working the GUI code stuff breaks and it's very difficult to find out where/why.
    • Use Threads. In a lot of cases you can make the application feel much more responsive by keeping the display code in a seperate thread from the processing code.
    • Consider your Users. When you design a GUI, remember that small things can make big differences. Consider a couple of things. First off, what is the technical level of your target audience. Second, what are you're users going to do most often. For users with little technical proficency remember that it's often preferable to use terminology that they are familiar with, even if it's not the most precise way of displaying the information. (For example, many users are confused by "export" options for programs, so you should put those options under "save as".) What your users are doing is going to effect where things go. You don't want the most common task to be 3 menus deep and at the bottom of the last tab in an obscure options window, you want it to be a big button in the main window. Likewise you don't want the most commonly clicked button to be the third down in a list of 6 or something.
    • Last, spend a bit of time reading up on the psychology of colors and shapes. Certain shapes and colors tend to draw the eye and this can be useful to give users subtle visual cues and will make your application much more intuitive.
    --
    Famous Last Words: "hmm...wikipedia says it's edible"
  11. Starpacks, Tcl/Tk by DavidNWelton · · Score: 4, Informative

    If it's a starpack, they won't know what it is. They download one executable file that is smaller than 2 megs, and run it.

    http://www.equi4.com/starkit.html

    I'll second the Tcl/Tk recommendation. It's super easy to get an application up and running in no time. What's even better is that you can do most of the development on Linux if it's not an app that requires a lot of windows specific services, and then switch to windows to put the final touches on. I've even had it happen that I didn't need to change any code at all (but it's usually recommended, just to give your app that extra polish).

  12. Delphi by silverdirk · · Score: 4, Informative

    I'll second Delphi. It uses an OO form of the Pascal language, which might be a problem for some, but I'd take pascal any day compared to basic. Also, Delphi is every bit as easy to use as VB.

    I used Delphi at a co-op job for six quarters, and it just plain made me feel powerful. I could throw together a nice GUI in minutes, and then "wire up" the events to real code after getting approval from the people who would be using the program. By the time I was done, i'd have a nice professional-looking app that was only about 700K, didn't need any funny DLL files, and was made out of nice strongly-typed OO code, and took advantage of the huge selection of freeware widgets on sites like http://www.torry.net/

    Delphi is the perfect language for writing fast windows apps. Its also perfect for database access, and with the right packages, can be perfect for lots of other tasks, like serial port access. (and what I mean by that is that you can go fumbling around with the Windows Serial port API, or you can get a nice I/O package for Delphi and just drag/drop some components that give you nice events to play with.)

    To top it off, if you look at the assembly generated by the compiler, its really pretty good. You might say it's equivalent to -O1 on C code, and thanks to its single-pass compiler, it compiles 10x as fast, so there's basically no wait.

    --
    Mark of the Coder fades from you. You perform Opening on World of Warcraft. Warcraft crits GPA for 4. GPA dies.