⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skindialog.cpp

📁 一个在WINCE5.0下开发的MP4播放器,可以播放多种视频文件,画面优质.
💻 CPP
字号:
// SkinDialog.cpp : implementation file
//

#include "stdafx.h"
//#include "CmmbPlayer.h"
#include "SkinDialog.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define SKINCAPTION_HEIGHT 20

/////////////////////////////////////////////////////////////////////////////
// CSkinDialog dialog
CDialogSK::CDialogSK()
    :CDialog()
{
}

CDialogSK::CDialogSK(LPCTSTR lpszTemplateName, CWnd* pParentWnd/*= NULL*/)
    :CDialog(lpszTemplateName, pParentWnd)
{
}

CDialogSK::CDialogSK(UINT nIDTemplate, CWnd* pParentWnd/*/= NULL*/)
    :CDialog(nIDTemplate, pParentWnd)
{
} 

CDialogSK::~CDialogSK()
{
} 

void CDialogSK::Constructor()
{
/*测试用
    m_bmpLeft.LoadBitmapEx(NULL, IDB_LEFT);  
    m_bmpRight.LoadBitmapEx(NULL, IDB_RIGHT);
    m_bmpBottom.LoadBitmapEx(NULL, IDB_BOTTOM);
    m_bmpTitle.LoadBitmapEx(NULL, IDB_TOP);  

    m_titleHeight = m_bmpTitle.Height()/2;
    m_borderLeftWidth = m_bmpLeft.Width()/2;
    m_borderRightWidth = m_bmpRight.Width()/2;
    m_borderBottomHeight = m_bmpBottom.Height()/2; 

    m_offsetLeft1 = 10;
    m_offsetLeft2 = 10;
    m_offsetRight1 = 10;
    m_offsetRight2 = 10;
    m_offsetBottom1 = 10;
    m_offsetBottom2 = 10;
    m_offsetTitle1 = 10;
    m_offsetTitle2 = 10;
*/
}

void CDialogSK::Destructor()
{
}

BOOL CDialogSK::DrawRight(CDC *pDC, int x, int y, int height, int state)
{
    int bmpwidth, bmpheight;
    m_bmpRight.Size(bmpwidth, bmpheight); 

    //bitmap rect
    RECT srctop, srcmid, desmid, srcdown; 

    if (state == 0)
    {
        srctop = CRect(0, 0, m_borderRightWidth, m_offsetRight1);
        srcmid = CRect(0, m_offsetRight1, m_borderRightWidth, m_offsetRight2);
        srcdown = CRect(0, m_offsetRight2, m_borderRightWidth, bmpheight);
    }
    else 
    {
        srctop = CRect(m_borderRightWidth, 0, bmpwidth, m_offsetRight1);
        srcmid = CRect(m_borderRightWidth, m_offsetRight1, bmpwidth, m_offsetRight2);
        srcdown = CRect(m_borderRightWidth, m_offsetRight2, bmpwidth, bmpheight);
    } 

    desmid = CRect(x, y+m_offsetRight1, x+m_borderRightWidth, y+height-bmpheight+m_offsetRight2); 

    m_bmpRight.Draw(pDC, x, y, &srctop);
    m_bmpRight.Fill(pDC, &desmid, &srcmid);
    m_bmpRight.Draw(pDC, x, y+height-bmpheight+m_offsetRight2, &srcdown); 

    return TRUE;
} 

BOOL CDialogSK::DrawLeft(CDC *pDC, int x, int y, int height, int state)
{ 
    int bmpwidth, bmpheight;
    m_bmpLeft.Size(bmpwidth, bmpheight); 

    //bitmap rect
    RECT srctop, srcmid, desmid, srcdown; 

    if (state == 0)
    {
        srctop  = CRect(0, 0, m_borderLeftWidth, m_offsetLeft1);
        srcmid  = CRect(0, m_offsetLeft1, m_borderLeftWidth, m_offsetLeft2);
        srcdown = CRect(0, m_offsetLeft2, m_borderLeftWidth, bmpheight);
    }
    else 
    {
        srctop  = CRect(m_borderLeftWidth, 0, bmpwidth, m_offsetRight1);
        srcmid  = CRect(m_borderLeftWidth, m_offsetLeft1, bmpwidth, m_offsetLeft2);
        srcdown = CRect(m_borderLeftWidth, m_offsetLeft2, bmpwidth, bmpheight);
    }

    desmid = CRect(x, y+m_offsetLeft1, x+m_borderLeftWidth, y+height-bmpheight+m_offsetLeft2); 

    m_bmpLeft.Draw(pDC, x, y, &srctop);
    m_bmpLeft.Fill(pDC, &desmid, &srcmid);
    m_bmpLeft.Draw(pDC, x, y+height-bmpheight+m_offsetLeft2, &srcdown); 

    return TRUE;
}

BOOL CDialogSK::DrawBottom(CDC *pDC, int x, int y, int width, int state)
{
    int bmpwidth, bmpheight;
    m_bmpBottom.Size(bmpwidth, bmpheight); 
    
    RECT srcleft, srcmid, desmid, srcright; 
    
    if (state == 0)
    {
        srcleft  = CRect(0, 0, m_offsetBottom1, m_borderBottomHeight);
        srcmid   = CRect(m_offsetBottom1, 0, m_offsetBottom2, m_borderBottomHeight);
        srcright = CRect(m_offsetBottom2, 0, bmpwidth, m_borderBottomHeight);
    }
    else 
    {
        srcleft  = CRect(0, m_borderBottomHeight, m_offsetBottom1, bmpheight);
        srcmid   = CRect(m_offsetBottom1, m_borderBottomHeight, m_offsetBottom2, bmpheight);
        srcright = CRect(m_offsetBottom2, m_borderBottomHeight, bmpwidth, bmpheight);
    }

    desmid = CRect(x+m_offsetBottom1, y, x+width-bmpwidth+m_offsetBottom2, y+m_borderBottomHeight); 
    
    m_bmpBottom.Draw(pDC, x, y, &srcleft);
    m_bmpBottom.Fill(pDC, &desmid, &srcmid);
    m_bmpBottom.Draw(pDC, x+width-bmpwidth+m_offsetBottom2, y, &srcright); 
    
    return TRUE;
} 

BOOL CDialogSK::DrawTitle(CDC *pDC, int x, int y, int width, int state)
{ 
    int bmpwidth, bmpheight;
    m_bmpTitle.Size(bmpwidth, bmpheight); 
    
    RECT srcleft, srcmid, desmid, srcright; 
    
    if (state == 0)
    {
        srcleft  = CRect(0, 0, m_offsetTitle1, m_titleHeight);
        srcmid   = CRect(m_offsetTitle1, 0, m_offsetTitle2, m_titleHeight);
        srcright = CRect(m_offsetTitle2, 0, bmpwidth, m_titleHeight);
    }
    else 
    {
        srcleft  = CRect(0, m_titleHeight, m_offsetTitle1, bmpheight);
        srcmid   = CRect(m_offsetTitle1, m_titleHeight, m_offsetTitle2, bmpheight);
        srcright = CRect(m_offsetTitle2, m_titleHeight, bmpwidth, bmpheight);
    } 

    desmid = CRect(x+m_offsetTitle1, y, x+width-bmpwidth+m_offsetTitle2, y+m_titleHeight); 

    m_bmpTitle.Draw(pDC, x, y, &srcleft);
    m_bmpTitle.Fill(pDC, &desmid, &srcmid);
    m_bmpTitle.Draw(pDC, x+width-bmpwidth+m_offsetTitle2, y, &srcright); 

    return TRUE;
} 

BOOL CDialogSK::DrawFrame(CDC *pDC, int x, int y,int width, int height, int state)
{
    DrawTitle(pDC, x+m_borderLeftWidth, y, width-m_borderLeftWidth-m_borderRightWidth, state); 
    DrawLeft(pDC, x, y, height, state);
    DrawRight(pDC, x+width-m_borderRightWidth, y, height, state);
    DrawBottom(pDC, x+m_borderLeftWidth, y+height-m_borderBottomHeight, width-m_borderLeftWidth-m_borderRightWidth, state); 

    return TRUE;
} 

BOOL CDialogSK::DrawBkDlg(CDC *pDC, int x, int y,int width, int height, int state)
{
    int bmpwidth, bmpheight;
    m_bmpBkDlg.Size(bmpwidth, bmpheight);

    RECT des, src;
    des = CRect(x,y, x+width, y+height);
    src = CRect(0, 0, bmpwidth, bmpheight); 

    m_bmpBkDlg.Fill(pDC, &des, &src); 

    return TRUE;
} 

BOOL CDialogSK::OnEraseBkgnd(CDC* pDC)
{ 
    CRect rtClient = CClientRect(m_hWnd);

    DrawFrame(pDC, rtClient.left, rtClient.top, rtClient.Width(), rtClient.Height(),0);
    DrawBkDlg(pDC, rtClient.left+m_borderLeftWidth, rtClient.top+m_titleHeight,
            rtClient.Width()-m_borderLeftWidth-m_borderRightWidth, 
            rtClient.Height()-m_titleHeight-m_borderBottomHeight, 0);

    return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -