65.9K
CodeProject 正在变化。 阅读更多。
Home

基于图片的皮肤系统和 MPEG 解码器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.86/5 (23投票s)

2000年7月28日

viewsIcon

451101

downloadIcon

13912

一个基于图片的 MFC 皮肤系统,允许用户自定义他们的对话框。该系统通过展示一个功能齐全的 MPEG 解码器应用程序来演示。

Sample Image - skinsyse.jpg

SkinSys Ver 1.0

一个基于图片的 MFC 皮肤系统。基于 FriendSoft 的 (www.yeah.net/FriendSoft) SkinForm。

SkinSys 版权所有 2000 Cüneyt ELÝBOL (www.celibol.freeservers.com)

包含

  • CSkinsys 代码
  • 简单的皮肤编辑器
  • 一个漂亮的 MPEG 1,2,3 解码器 (版权所有 www.eldos.org - 基于 MAPlay 解码器)
  • MPEGPlayer 项目(未完成。它只是一个示例。)

目录

  • 解码器:MPEG 解码器代码
  • 编辑器:Skin编辑器文件
  • 示例:示例皮肤文件
  • SkinSys:CSkinsys 源代码
  • 根目录:MPEGPlayer 项目

要求

该系统仅需要 "OleLoadPicture" 函数。(请参阅 Skindialog.cpp 中的 LoadPictureFile 函数。)

如何使用

请阅读这些说明,并查看示例目录和 MPEGPlayer 项目

  1. 绘制遮罩位图
  2. 绘制主位图
  3. 如果您需要或想要
    1. 绘制鼠标悬停位图
    2. 绘制鼠标按下位图
    3. 绘制禁用位图
  4. 运行 Skin编辑器
  5. 选择“屏幕”选项卡
  6. 填充所有图片
  7. 如果需要,选择“预览”按钮
  8. 保存并退出
  9. 运行 Visual Studio
  10. 创建一个基于对话框的新项目(例如,对话框名称 = CBaseDialog
  11. 包含 "SkinDialog.h"(例如,在 "StdAfx.h" 中)
  12. CBaseDialog : public CDialog 更改为 CBaseDialog : public CSkinDialog
  13. 转到 CBaseDialog::OnInitDialog 并添加这些行
    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. 编译并运行。

控制按钮点击、滑块、进度条、文本等等

如果您希望在基类(CSkinDialog)中处理这些事件

  1. void ProgresChanged(CString m_Name); // 如果进度发生变化
  2. void MouseMoved(CString m_ButtonName, int x, int y); // 如果鼠标移动
  3. void TrackChange(CString m_ButtonName, UINT nSBCode, UINT nPos); // 如果滑块发生变化
  4. void ButtonPressed(CString m_ButtonName); // 如果按钮被按下

您应该将这些函数添加到您的 CBaseDialog 类中。

更改工具提示

使用 Set<xxx>ToolTip 函数。 <xxx> 是 Button、Text...
例如

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

获取值

使用 Get<xxx> 函数
例如

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

设置值

使用 Set<xxx> 函数
例如

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

注释

感谢您对 CSkinsys 的兴趣。这是第一个版本,可能存在错误和缺陷。请向我报告任何错误或问题,或者任何问题。

许可证

本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。

作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.