📄 skindialog.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 + -