Click here to Skip to main content
15,867,704 members
Articles / Desktop Programming / MFC

A Picture Based Skin System and MPEG Decoder

Rate me:
Please Sign up or sign in to vote.
4.86/5 (25 votes)
27 Jul 2000 439.2K   13.9K   149   99
A picture based skin system for MFC that allows the user to customise their dialogs. The system is demonstrated by presenting a fully functioning MPEG decoder application.

Sample Image - skinsyse.jpg

SkinSys Ver 1.0

A picture based skin system For MFC. Based on FriendSoft's (www.yeah.net/FriendSoft) SkinForm.

SkinSys is copyright 2000 Cüneyt ELÝBOL (www.celibol.freeservers.com)

Includes

  • CSkinsys codes
  • Simple Skin Editor
  • A Beautiful MPEG 1,2,3 decoder (Copyright www.eldos.org - Based On MAPlay Decoder)
  • MPEGPlayer project (not completed. It is only a sample.)

Directories

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

Requirement

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

How to Use

Please read these notes and see the Sample Directory and MPEGPlayer project:

  1. Draw mask bitmap
  2. Draw main Bitmap
  3. If you need or want
    1. Draw mouse over bitmap
    2. Draw mouse down bitmap
    3. 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 and add these lines:
    C++
    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();
  14. Compile and run.

Controlling Buttons Click, Trackbar, ProgressBar, Text, etc.

If you want these events in the Base Class (CSkinDialog):

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

you should add these functions to your CBaseDialog class.

Changing the Tooltip

use Set<xxx>ToolTip function. <xxx> is Button, Text...
For example:

C++
SetButtonToolTip("BUTTON_USEEQ", "Equalizer is On");

Getting Value

use Get<xxx> function
For example:

C++
BOOL useEQ = GetButtonCheck("BUTTON_USEEQ"); // if BUTTON_USEEQ checked

Setting Value

use Set<xxx> function
For example:

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

Notes

Thanks for your interest in CSkinsys. This is the first release, and may have bugs and errors. Please report any bugs or errors, or any questions to me.

License

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.


Written By
Turkey Turkey
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
Questionsome bugs. but good Pin
Member 90491296-Dec-12 15:45
Member 90491296-Dec-12 15:45 
GeneralMy vote of 4 Pin
hoseinhero27-Jun-12 22:55
hoseinhero27-Jun-12 22:55 
GeneralI want some part of main image to be transparent. Pin
ekklesia22-Nov-08 19:32
ekklesia22-Nov-08 19:32 
Generalvery good! Pin
yangwm2521-Oct-08 23:56
yangwm2521-Oct-08 23:56 
AnswerLoadSkins in ButtonPressed will cause the application crash Pin
zhang.hong27-Aug-08 13:31
zhang.hong27-Aug-08 13:31 
If you use LoadSkins in ButtonPressed handler, for example, to change the skin use a skinned button, the application will crash.

The error message you will get is access violation in CWnd::Default().

This was caused by the CSkinButton::OnLButtonUp, which call CBitmapBtn::OnLButtonUp at the end. The hWnd of the button was invalid then before the button itself had already been destroyed by CSkinDialog::free

Hope this helps somebody.

// ===========================
// = Zhang Hong@Shanghai.China
// ===========================

QuestionFailed to display button image? Pin
zhang.hong16-Aug-08 8:11
zhang.hong16-Aug-08 8:11 
GeneralThe mp3's during is not accurate Pin
3651385278-Nov-07 20:48
3651385278-Nov-07 20:48 
Generalcrash on the application [modified] Pin
RajeevSahu26-Jun-07 23:01
RajeevSahu26-Jun-07 23:01 
QuestionIs the skinsys author still around? Pin
1Bob27-Feb-06 4:19
1Bob27-Feb-06 4:19 
GeneralStack corruption detected in VC++7.1 Pin
1Bob16-Feb-06 8:06
1Bob16-Feb-06 8:06 
Questionerror message: Pin
aladeck15-Nov-05 16:42
aladeck15-Nov-05 16:42 
AnswerRe: error message: Pin
-=Seph=-23-Nov-05 19:45
-=Seph=-23-Nov-05 19:45 
Questionhow to combine skin &amp; resize function Pin
Member 12435885-Jul-05 7:40
Member 12435885-Jul-05 7:40 
Generalanother choice,uskin - personal free skin lib Pin
thirdwolf26-Jun-05 17:34
thirdwolf26-Jun-05 17:34 
GeneralCSkinDialog not support XP and 98 Pin
Reuven Eliahu25-May-05 7:33
Reuven Eliahu25-May-05 7:33 
Generalcurrent good toolkits Pin
lonestarr5-Sep-04 5:27
lonestarr5-Sep-04 5:27 
GeneralVolume progress disappear after closing a child window/dialog. Pin
Member 121115328-Jul-04 5:58
Member 121115328-Jul-04 5:58 
Questionwhy there is no picture on my dialog?? Pin
gunslover10-Jun-04 22:40
gunslover10-Jun-04 22:40 
AnswerRe: why there is no picture on my dialog?? Pin
Yohi9-Aug-04 23:56
Yohi9-Aug-04 23:56 
Generalreload a nother skin at run time Pin
abo_moslem18-Mar-04 0:56
abo_moslem18-Mar-04 0:56 
GeneralRe: reload a nother skin at run time Pin
Sam.Liang13-Apr-04 21:26
Sam.Liang13-Apr-04 21:26 
GeneralText Alignment Pin
jochen66614-Dec-03 4:29
jochen66614-Dec-03 4:29 
GeneralSkin Editor Pin
Rachel2211-Nov-03 23:18
Rachel2211-Nov-03 23:18 
GeneralSkinMagic Toolkit Pin
jedyking13-Apr-03 4:58
jedyking13-Apr-03 4:58 
GeneralBug in SkinSlider Pin
Zaharang2-Apr-03 21:06
Zaharang2-Apr-03 21:06 

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.