4

What are the recommended colors for an application's background, button faces, etc.?

In the past I've just chosen a color scheme but I'd like to be more compatible with the Windows Accessibility Options, etc.

I see that VB6 has System Colors like Application Workspace.

Edit: I'd like to find an explanation of all of those colors (like what's the difference between Application Workspace and Window Background?

MarkJ
  • 30,070
  • 5
  • 68
  • 111
Clay Nichols
  • 11,848
  • 30
  • 109
  • 170
  • Your question is closely related to this one. http://stackoverflow.com/questions/2268424/visual-guide-to-system-windows-systemcolors – jpierson May 05 '10 at 06:18

5 Answers5

4

In my opinion, you should leave the colors as they are if you are using standard controls; they'll get the right color according to che current color scheme by themselves. You need to use the color constants only if you have to draw your own UI elements; in that case, the meaning of those constants is explained briefly in their documentation.

Matteo Italia
  • 123,740
  • 17
  • 206
  • 299
  • +1. Nearly always true but there are some controls that default to non-standard colours so you have to be careful (e.g. some of the SS controls from `threed32.ocx`) – MarkJ Jan 26 '10 at 10:15
  • That's what I've done so far but the VB6 Forms are defaulting to a backgroundcolor of ButtonFace which of course makes the buttons hard to see. So then I tried to figure out what's a better System color, hence the need to know what they mean. – Clay Nichols Jan 26 '10 at 16:33
  • That default is correct and "by design": if you dig depper in the documentation, you'll get to the GetSysColor API (http://msdn.microsoft.com/en-us/library/ms724371%28VS.85%29.aspx) and to its constants (that are renamed in VB for the sake of consistency). There, you'll find that the constant COLOR_BTNFACE (=vbButtonFace) is descripted as "Face color for three-dimensional display elements and for *dialog box backgrounds*." So, if you want to conform to the standard Windows UI you are forced to use the same color for dialogs BG and for the face of 3D elements. – Matteo Italia Jan 26 '10 at 22:41
  • Window Background is for content. This is why controls like a Textbox default to this as the background color. To improve visibility in XP and later you can apply the CC 6.0 themeing to your UI elements. – Bob77 Jan 27 '10 at 02:18
  • I believe Application Workspace is the background color for an MDI parent form. – Bob77 Jan 27 '10 at 02:22
2

This PDF http://www.johnsmiley.com/cis18/Smiley009.pdf [ explanation of VB6 System Color values ]should help you. It lists all the system color constants and what they mean. For instance vbApplicationWorkspace is the "Background color of multipledocument interface (MDI) applications."

Clay Nichols
  • 11,848
  • 30
  • 109
  • 170
AUSteve
  • 3,238
  • 21
  • 36
1

If you're interested in the whole MS Windows UI/UX guidelines, they are available online here and for download here. Page 618 deals with how to "Use theme or system Colors"

Clay Nichols
  • 11,848
  • 30
  • 109
  • 170
Gordon Mackie JoanMiro
  • 3,499
  • 3
  • 34
  • 42
  • An alternative to trawling through the user experience guidelines is to go into control panel and look at the applet for changing the system colours. The names used there are similar to the VB6 constant names, and the preview shows you the meaning. Just change a few items to colours like magenta and you'll be able to tell which bit of the UI they represent. – MarkJ Jan 26 '10 at 10:17
  • Yeah, I tried that (and you can do the same by just applying the color in VB6 but I felt I should know more about it. – Clay Nichols Jan 26 '10 at 16:35
0

It depends on the language and framework you use. .Net for example has an entire SystemColors class full of static properties like SystemColors.Control that are 'changed' to the corresponding system color in runtime.

I think most office applications conform to the system colors, while most graphics intensive applications (e.g. games) use their own color scheme.

Webleeuw
  • 7,222
  • 33
  • 34
0

It is best if you try to use the colors of the current system (like the .NET SystemColors), that way if the user changes his settings (for example if he uses a high-contrast color scheme or some fancy black theme he likes) your application will adapt those colors and that way conforms to the users preferences/needs.