Creating Skins with SkinSys Ver 1.0


SkinsSys is a picture-based skin system written in Visual C++/MFC and based on FriendSoft’s SkinForm.


This article (and its downloads) includes the following:

  • CSkinsys codes
  • Simple Skin Editor
  • A beatiful MPEG 1,2,3 decoder (Copyright – based on the MAPlay Decoder)
  • MPEGPlayer project

Download Directories

Once you download and extract the files, you’ll see several new folders. Here is what each is used for.

  • Decoder: MPEG Decoder codes
  • Editor : Skineditor Files
  • Sample : Sample Skin Files
  • SkinSys: CSkinsys Codes
  • Root : MPEGPlayer Project


This system only requires the “OleLoadPicture” function (Please see LoadPictureFile function in Skindialog.cpp)

How to Use

Please Read This notes and see Sample Directory and MPEGPlayer project

  1. Draw mask bitmap
  2. Draw main Bitmap
  3. If you need or want
    • Draw mouse over bitmap
    • Draw mouse down bitmap
    • Draw disable bitmap
  4. Run Skineditor
  5. Select “Screens” Tab
  6. Fill All Pictures
  7. If you want select “Preview” Button
  8. Save and exit
  9. Run Visual Studio
  10. Create a Dialog based new Project (for example Dialog Name = CBaseDialog)
  11. Include “SkinDialog.h” (for example in “StdAfx.h”)
  12. Change to CBaseDialog : public CDialog to CBaseDialog : public CSkinDialog
  13. Go to CBaseDialog::OnInitDialog
  14. Add these lines
    char m_skin[512];
    sprintf(m_skin, "<Your Skin Name>");
    // If you want a menu < Activate to Right click > add this line
    // If you Want Caption 
    SetWindowText("MPEG Player");
    // Set To My SkinFile
  15. Compile and Run

Controlling Button Clicks, Trackbar, ProgressBar and Text

Here are the protocols for the different events that you might want to handle in the base class (CSkinDialog)…

void ProgresChanged(CString m_Name); // If progress changes
void MouseMoved(CString m_ButtonName, int x, int y); // if Mouse Moved
void TrackChange(CString m_ButtonName, UINT nSBCode, UINT nPos); // if Trackbar change
void ButtonPressed(CString m_ButtonName); // if Button Pressed

You can also add any of these functions to your class depending on your needs.

  • Changing the tooltip
    Use one of the Set<xxx>ToolTip functions. Where <xxx> is Button, Text, etc. For example:

    SetButtonToolTip("BUTTON_USEEQ", "Equalizer is On");
  • Getting Value
    Use one of the Get<xxx> functions. For example:

    BOOL useEQ = GetButtonCheck("BUTTON_USEEQ"); // if BUTTON_USEEQ checked)
  • Setting Value
  • Use one of the Set<xxx> functions. For example:

    SetButtonCheck("BUTTON_USEEQ", useEQ); // if useEQ = True BUTTON_USEEQ is checked)

Additional Notes

Thanks for enterested to CSkinsys. But this is first release. It may have any bug and error.
Please report any bug and error or any question to me.


Download source and demo – 312 Kb

More by Author

Must Read