Click here to Skip to main content
Click here to Skip to main content

Use the Free USkin Toolkit to Skin your Application

By , 10 Nov 2008
 

The current version (V3.0 beta) does not need skinbuilder, the next version will provide one.

Sample Image

Introduction

As we know, Windows XP adds support for themes for applications. When we change the Windows theme, all the Windows standard applications change into the same theme. How can we add skin support to our own software and make our software different from others? Here, I suggest a way: use the USkin toolkit.

Why USkin?

  1. Saves your development time. You don't have to care too much about your software UI. After finishing your functions, add three lines of code to support a skin. It's very easy, and will save you time.
  2. Makes your app look and feel good:), that's it.
  3. Supports color themes. This can make a skin file look like a 100 different skins. Save your UI design time.
  4. USkin provides a free version. Save your money!
  5. Free powerful SkinStudio included that you can use to design your own skin file.

USkin Features

  • Supports more than 20 Windows standard controls
  • Supports system standard dialogs, such as file dialogs, color dialogs, print dialogs
  • Supports custom defined controls/third party controls
  • Supports WYSIWYG style skin file editing
  • Supports MDI/SDI/Dialog style apps
  • Supports window blinds skin file importing. More than 10000 skin files can be used
  • Supports color themes
  • Supports VC/SDK/VB/.NET, no language limitations
  • Supports multithreading
  • Supports changing skin at runtime
  • Supports all popup menus, including the edit control context menu!
  • Only two lines required to add skin support
  • Supports all scrollbar skins
  • Small skin file size, around 30 KB

Using the Code

Using USkin functions is very easy. Let's begin.

First, include the USkin.h file in your app:

#include "uskin.h"

Then, in the InitInstance function, call USkinInit to initiate the USkin library:

BOOL CSDIApp::InitInstance()
{
    InitCommonControls();

    CWinApp::InitInstance();

    if (!AfxOleInit())
    {
        AfxMessageBox(IDP_OLE_INIT_FAILED);
        return FALSE;
    }
    AfxEnableControlContainer();
    // Init USkin lib and load media skin file
    USkinInit(NULL,NULL,_T("..\\Skins\\vista.msstyles"));
    SetRegistryKey(_T("Local App"));
    LoadStdProfileSettings(4);

    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
        IDR_MAINFRAME,
        RUNTIME_CLASS(CSDIDoc),
        RUNTIME_CLASS(CMainFrame),
        RUNTIME_CLASS(CSDIView));
    if (!pDocTemplate)
        return FALSE;
    AddDocTemplate(pDocTemplate);

    this->RegisterShellFileTypes();
    TCHAR sz[500];
    ::GetModuleFileName(NULL,sz,500);
    AfxMessageBox(sz);

    CCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);

    if (!ProcessShellCommand(cmdInfo))
        return FALSE;

    m_pMainWnd->ShowWindow(SW_SHOW);
    m_pMainWnd->UpdateWindow();

    //if you want do your own subclass,call USkinInit here
    //USkinInit(NULL,NULL,_T("vista.msstyles"));

    return TRUE;
}

In the end, call USkinExit before your app exits:

int CSDIApp::ExitInstance()
{
    USkinExit();
    return CWinApp::ExitInstance();
}

Using the Code in .NET

The sample code is in C#. You can easily change to other .NET languages. OK, let's begin. First add USkinSDK.cs to your project. Then in the Main entry, add one line of code like this:

//First Declare a skin object
    [STAThread]
	static void Main()
	{
        USkinSDK.USkinInit("", "", "..\\Skins\\DiyGreen.msstyles");
		Application.Run(new Form1());
	}
}

For skinning the Button (GroupBox, CheckBox, RadioButton) object correctly, you need to change the FlatStyle property into System.

The resulting screen will look like this:

Points of Interest

This article does not focus on the technical side of the implementation. If you want to know how it works, you can try these CodeProject articles:

History

  • Updates in version 3.0 beta [2008-11-10]
    • New render engine. I rewrote the core render engine such that it is faster, of high quality, and safer.
    • Added Microsoft Window's Theme file format (*.msstyles) support. The user does not need to convert or edit the skin file. There are many skin files to use.
    • Added Multi-Monitor support.
    • Fixed USkin2.2 known bugs.
    • Removed custom draw functions in this version because it was using the Microsoft theme file.
  • Updates in version 2.2 [2006-08-07]
    • Fixed the menubar update error.
    • Added the USkinUpdateMenuBar function. When the user modifies the menu by USkinGetMenu, the user should call USkinUpdateMenuBar to update the menubar.
    • Added RightToLeft text support.
    • Added Winamp like player sample.
    • USkin file format compatible.
    • Enhanced the SkinBuilder.
    • Added SkinBuilder Help document.
    • Added multilanguage support to SkinBuilder.
    • Enhanced ScrollBar control.
  • Updates in version 2.1
    • Fixed the MultiLine style in Button/CheckBox/RadioBox.
    • Added .NET skin support. Now you can use USkin with your .NET applications!
    • Added a new library called USkinCom. Easy for .NET use.
    • Added two C# samples. One is MDI, the other is SDI. You can see the power of USkin in these samples.
    • Added color replace feature. Now, you can replace standard system colors.
    • Enhanced the USkinApplyColorTheme function. Everything will change when calling the USkinApplyColorTheme function.
    • Added the USkinDrawFrameControl function to replace the standard DrawFrameControl.
    • Added six skin files to the pack. All skin files are carefully edited.
    • Enhanced many functions.

Special Thanks

  • Thanks to The Code Project for providing a good platform for developers
  • Thanks to you guys who use uskin
  • Thanks AlecJames - He found a multi-monitor bug. Sorry man, I took a long time to make v3.0

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

thirdwolf
Web Developer
China China
Member
No Biography provided

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
QuestionDetory the message loopmembertang100071 Aug '12 - 15:26 
I tried,I think it would destory the original message loop,for example I make the Max button disable, but the sckin let it become enable.How to solute this question? Thinks
asd

GeneralMy vote of 1memberosirisgothra8 Jan '12 - 18:46 
please see my comment in the faq
QuestionShell Style .msstylesmemberquike60411 Nov '11 - 15:51 
Hi
 
The style "Luna.msstyles" of windows Xp have 3 styles "blue, methalic, silver", the question is:
 
¿How do you change the style? for example
 
USkinInit(NULL,NULL,_T("..\\Skins\\Luna.msstyles"));
 
By default put blue but ¿how do i add other style (silver, methalic....)?
 
¿Could i use the code?
 
USkinInit(NULL,NULL,_T("..\\Skins\\Luna.msstyles", "silver"));
 
I try using the style "silver", but it give me an error.
 
Any help is appreciated.
 
Thanks
GeneralMy vote of 1memberhaily_lee30 Oct '11 - 22:43 
only an ad
GeneralRe: My vote of 1memberosirisgothra8 Jan '12 - 18:41 
agreed, the developer's creed at least what I know of it, is share and share alike. Fulfilling a great need and tricking people into thinking this is a free source library is just wrong. Go to your own website and do that crap. And I'm sorry but it is just not that great, at least not to be nagware. This is just my opinion of course, maybe I'm crazy but even so I'm not blind. Dead | X|
-O-
 
For a free toy suprise go to: http://paradisim.zxq.net

GeneralWhy Chinese?membermyssoft12 May '11 - 23:57 
Great work but why chinese? When I downloaded and opened the files and wants to run the C# sample I can't run it because it all is in chinese. So couldn't you provide a english verion of it?
GeneralGood article! Do you have a C# version of it?memberTheRomanian18 Apr '11 - 5:11 
Good article! 5 stars!
 
Do you have a C# version of it?
How old is the Orthodox Faith?
http://www.orthodoxphotos.com/history.shtml
 

If you are a Lutheran, your religion was founded by Martin Luther, an ex-monk of the Catholic Church, in the year 1517. If you belong to the Church of England, your religion was founded by King Henry VIII in the year 1534 because the Pope would not grant him a divorce with the right to re-marry. If you are a Presbyterian, your religion was founded by John Knox in Scotland in the year 1560. If you are a Congregationalist, your religion was originated by Robert Brown in Holland in 1582. If you are Protestant Episcopalian, your religion was an offshoot of the Church of England, founded by Samuel Senbury in the American colonies in the 17th century. If you are a Baptist, you owe the tenets of your religion to John Smyth, who launched it in Amsterdam in 1606. If you are of the Dutch Reformed Church, you recognize Michelis Jones as founder because he originated your religion in New York in 1628. If you are a Methodist, your religion was founded by John and Charles Wesley in England in 1774. If you are a Mormon (Latter Day Saints), Joseph Smith started your religion in Palmyra, New York, in 1829. If you worship with the Salvation Army, your sect began with William Booth in London in 1865. If you are Christian Scientist, you look to 1879 as the year in which your religion was born and to Mary Baker Eddy as its founder.
 
If you belong to one of the religious organizations known as "Church of the Nazarene, Pentecostal Gospel," "Holiness Church," or "Jehovah's Witnesses," your religion is one of the hundreds of new sects founded by men within the past hundred years.
 
If you are Roman Catholic, your church shared the same rich apostolic and doctrinal heritage as the Orthodox Church for the first thousand years of its history, since during the first millennium they were one and the same Church. Lamentably, in 1054, the Pope of Rome broke away from the other four Apostolic Patriarchates (which include Constantinople, Alexandria, Antioch and Jerusalem), by tampering with the Original Creed of the Church, and considering himself to be infallible. Thus your church is 1,000 years old.
 
If you are Orthodox Christian, your religion was founded in the year 33 by Jesus Christ, the Son of God. It has not changed since that time. Our church is now almost 2,000 years old. And it is for this reason, that Orthodoxy, the Church of the Apostles and the Fathers is considered the true "one Holy Catholic and Apostolic Church." This is the greatest legacy that we can pass on to the young people of the new millennium.

Questionwhere can I get the source code of the uskin? and how much it is?memberMember 3898746 Apr '11 - 19:21 
can not find the price information at the website NeeMedia!
GeneralMy vote of 3membercdinten1 Mar '11 - 23:20 
advertisement?
GeneralUnicode error with button, check box and radio boxmemberforzamilan13 Sep '10 - 17:55 
Hi,
I've test your skin lib but I found unicode error in button, check box and radio box.
For examples: "Chọn Skin" come to "Ch?n Skin", "thử một tí nào" come to "th? m?t tí nào",...
It's the same error I got with DirectSkin, another skin library (it supports WindowsBlind, too).
Hope you can fix these problems.
 
Regards,

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

Permalink | Advertise | Privacy | Mobile
Web04 | 2.6.130523.1 | Last Updated 10 Nov 2008
Article Copyright 2006 by thirdwolf
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid