Click here to Skip to main content
13,446,859 members (47,663 online)
Click here to Skip to main content
Add your own
alternative version


26 bookmarked
Posted 11 Jun 2003

CP<sup>2</sup> Universal Gui LibrarY (UGLY) Project - MAIN PAGE

, 3 Sep 2003
Rate this:
Please Sign up or sign in to vote.
A GUI library collaborative project.

A Code Project Project by Bob's loyal subjects
What is CP2?
Code Project Project is a collaborative effort, first brought forward by Joel Holdsworth and later Jamie Hale, to produce quality software by all and for all CodeProject users, by utilizing their collective knowledge and expertise in the software development profession. If you have general questions or comments pertaining to CP2, please direct them to Jason Henderson.

All Code Project Projects are works in progress. Not all pages may be available until progress has been made in that area. Please do not pass judgement on this project or it's article series until its completion. Thank you.

CP2 Universal Gui LibrarY (UGLY) Project


***NOTE:  This project is in the process of moving to a new location.***

It will no longer be affiliated with CodeProject, and it will have a new name - FLUID UI Toolkit.

Its new location is

You are welcome to join this project.  To sign up, please register on the forums.

Critical Documents:

Project Leader:
Justin Dunlap

Project Abstract

The UGLY Library - Universal Graphical User Interface LibrarY is a project aimed at providing a comprehensive, modern, and innovative suite controls and support classes to the user interface designer. These classes will allow them to access new, easy to use controls and UI layout options such as user configurable menus and toolbars, floating windows, etc.


To start with, the project will be aimed at getting a suite of standard windows controls together that will be drop-in replacements for the existing ones. These replacements will have extended functionality and drawing capabilities - the type of which will be dependent on the control type.

Starting in this way, we can keep the project small and build from there, we need to see how enthusiastic people are going to be and small bite sized chunks will be easier to digest.

Skill Set

It looks like the kind of people we will need are those who are familiar with developing controls under Windows. I myself have quite some experience in this area. We are implementing the controls in both C# (for .NET) and C++ (for Win32), so we need people with experience in one or both of these languages.


Since the project consists of controls/components, it should be fairly easy to divide it up into sub-sections.  Besides the control, there will be:

  • A base framework
  • A base control class(es)
  • An example test application (one or more)  - to start with, I suggest a bitmap editor (with a bit more features than Paint) and a rich text editor (like WordPad).

We will have a DLL for the framework, and one for the basic controls.  For the special controls, a DLL should be created for each class of controls - one for all special listview-related controls, one for all special buton-related controls, etc.

Some of the areas we will want to provide enhanced support for are: 

  • Printing functionality - controls should have a GetRendering() method that gets a rendering of the control.
  • Owner drawn/skinnable - through an advanced rendering/behavior subsystem.
  • Better UI

The User's view

As the intended users will be application programmers, we need decent documentation on the classes and the API's. Keeping everything as consistent as possible across all the classes is a must. To begin with, we will simply define the interfaces in XML, to be viewed with the XSLT transform I created for the purpose.  Eventually, though, we will probably want to use an automatic documentation system (I am trying to find one for use with C++).

We're aiming here to make the target audience's life as easy as possible. You want a spin control that increments in 0.01 units? You got it! etc.

A list of controls we may support




  • treeview
  • listview
  • listbox
  • combobox
  • fontcombo
  • ip address box
  • masked edit control
  • property page
  • grid control
  • button
  • toolbar
  • rebar
  • commandbar
  • richedit control
  • MDI tabs
  • chart
  • date picker
  • calendar
  • (marquee)
  • slider
  • tab page
  • explorer treeview
  • explorer listview
  • progress bar
  • syntax highlight numbered text control
  • property grid
  • statusbar
  • updown - spin?
  • scrollable viewport
  • monthview
  • ruler
  • commandbar
  • treelistview
  • listbar (outlook-style)
  • toolbox listbar
  • clock
  • dial
  • range picker
  • skinnable popup - for balloons, etc.
  • data navbar
  • collapsible panel
  • color picker bar - functionality is like scrollbar
  • color palette
  • color picker gradient - round, square, etc
  • auto-complete textbox
  • image-calendar
  • time-scheduler
  • topiclist
  • imagelistview
  • appbar
  • wizard ctl
  • advanced message box
  • analog meter control
  • peak-meter
  • number ticker (like odometer)
  • colorcombo
  • lcd display
  • dockable / pinnable dialogs
  • LED controls
  • enhanced MessageBox
  • radio dial/wheel
  • dockable slide panels/drop down lists
  • maybe a door control
  • book pages control
  • a control like the flexible PowerBuilder datawindow
  • a sticky-note control or undockable thumbtacks (stick a note anywhere on the window and move it anywhere)
  • a rolodex control
  • file cabinet control (user can lable outside and drag and drop things in and out)
  • <LCD a light panel (ever play with lite-brite?) LI <>
  • flip switches (like a light switch)
  • springy Slinky-like dropdown list control (release and it springs back up)
  • slot machine lever control

I am especially interested in a commandbar and an image thumbnail viewer.


June 12 2003 - Posted

<Other updates - were not kept track of>

July 31 2003 - Updated by Justin Dunlap - did a full update.

Other CP2 projects

Defect Tracking and Source Control Project
Scripting Framework Project

Group projects like this one cannot succeed without the help of dedicated individuals. If you are interesting in volunteering your time and expertise to this project, please post a message in the VOLUNTEERS thread on this page and the Project Leader will contact you for confirmation.


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author

J. Dunlap
Web Developer
United States United States
My main goal as a developer is to improve the way software is designed, and how it interacts with the user. I like designing software best, but I also like coding and documentation. I especially like to work with user interfaces and graphics.

I have extensive knowledge of the .NET Framework, and like to delve into its internals. I specialize in working with and MyXaml. I also like to work with ASP.NET, AJAX, and DHTML.

You may also be interested in...

Comments and Discussions

GeneralWait til PDC Pin
Wesner Moise21-Aug-03 6:15
memberWesner Moise21-Aug-03 6:15 
GeneralRe: Wait til PDC Pin
Joey Bloggs29-Aug-03 19:13
memberJoey Bloggs29-Aug-03 19:13 
GeneralRe: Wait til PDC Pin
Wesner Moise29-Aug-03 19:58
memberWesner Moise29-Aug-03 19:58 
GeneralRe: Wait til PDC Pin
Joey Bloggs29-Aug-03 21:06
memberJoey Bloggs29-Aug-03 21:06 
GeneralRe: Wait til PDC Pin
Normski4-Sep-03 21:26
memberNormski4-Sep-03 21:26 
GeneralRe: Wait til PDC Pin
Jim Crafton5-Sep-03 6:25
memberJim Crafton5-Sep-03 6:25 
GeneralRe: Wait til PDC Pin
Wesner Moise5-Sep-03 7:55
memberWesner Moise5-Sep-03 7:55 
GeneralRe: Wait til PDC Pin
Normski6-Sep-03 7:23
memberNormski6-Sep-03 7:23 
GeneralRe: Wait til PDC Pin
Wesner Moise5-Sep-03 7:57
memberWesner Moise5-Sep-03 7:57 
GeneralRe: Wait til PDC Pin
Normski6-Sep-03 7:26
memberNormski6-Sep-03 7:26 
Generalopen source oo text engines Pin
Joey Bloggs2-Aug-03 19:46
memberJoey Bloggs2-Aug-03 19:46 
GeneralRe: open source oo text engines Pin
jdunlap2-Aug-03 20:00
memberjdunlap2-Aug-03 20:00 
GeneralRe: open source oo text engines Pin
Arnt Witteveen5-Aug-03 11:14
memberArnt Witteveen5-Aug-03 11:14 
GeneralRe: open source oo text engines Pin
Joey Bloggs5-Aug-03 12:44
memberJoey Bloggs5-Aug-03 12:44 
GeneralRe: open source oo text engines Pin
Arnt Witteveen6-Aug-03 8:41
memberArnt Witteveen6-Aug-03 8:41 
GeneralCustom Renderers Pin
Joey Bloggs1-Aug-03 23:27
memberJoey Bloggs1-Aug-03 23:27 
GeneralRe: Custom Renderers Pin
jdunlap2-Aug-03 14:39
memberjdunlap2-Aug-03 14:39 
GeneralF*** you for yr IQ = 30 Pin
goo@foolgoo.com29-Jul-03 7:55
membergoo@foolgoo.com29-Jul-03 7:55 
GeneralRe: f*** you for yr IQ = 30 Pin
Joel Holdsworth29-Jul-03 10:11
memberJoel Holdsworth29-Jul-03 10:11 
GeneralLook at your f***ing sign Pin
goo@foolgoo.com31-Jul-03 7:11
membergoo@foolgoo.com31-Jul-03 7:11 
GeneralRe: Look at your f***ing sign Pin
John M. Drescher2-Aug-03 5:18
memberJohn M. Drescher2-Aug-03 5:18 
GeneralRe: Look at your f***ing sign Pin
Joey Bloggs2-Aug-03 11:53
memberJoey Bloggs2-Aug-03 11:53 
GeneralRe: Look at your f***ing sign Pin
jdunlap2-Aug-03 12:02
memberjdunlap2-Aug-03 12:02 
GeneralSerious doubt about this project! Pin
Anonymous29-Jul-03 4:12
sussAnonymous29-Jul-03 4:12 
GeneralRe: Serious doubt about this project! Pin
Joel Holdsworth29-Jul-03 10:12
memberJoel Holdsworth29-Jul-03 10:12 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web04-2016 | 2.8.180318.2 | Last Updated 4 Sep 2003
Article Copyright 2003 by J. Dunlap
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid