Creating Skins with SkinSys Ver 1.0

Introduction

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

Contents

This article (and its downloads) includes the following:

  • CSkinsys codes
  • Simple Skin Editor
  • A beatiful MPEG 1,2,3 decoder (Copyright www.eldos.org – 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

Requirements

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
    SetMenuID(IDR_MAINMENU);
    
    // If you Want Caption 
    SetWindowText("MPEG Player");
    
    // Set To My SkinFile
    SetSkinFile(m_skin);
    CSkinDialog::OnInitDialog();
    
  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.

Downloads

Download source and demo – 312 Kb

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read