rtskin.cpp
来自「vc++编写的界面源代码,对C++爱好者是很发的帮助。」· C++ 代码 · 共 591 行 · 第 1/2 页
CPP
591 行
#include "StdAfx.h"
#include "RTSkin.h"
#include "RTXmlFile.h"
#include "RTDraw.h"
#include "RTDialog.h"
#include "RTButton.h"
#include "RTStatic.h"
#include "RTTreeCtrl.h"
#include "RTTabCtrl.h"
#include "RTStatusBar.h"
#include "RTSplitterWnd.h"
#include "RTListCtrl.h"
#include "RTScrollBar.h"
#include "RTEdit.h"
#include "RTRichEdit.h"
#include "RTFrameWnd.h"
#include "RTToolBar.h"
#include "RTMenu.h"
#include "RTCheckBox.h"
CRTSkin::CRTSkin(void)
{
for(int i = 0; i < 5; i++)
{
m_SplitterWndBitmap[i] = NULL;
m_TitleBarBitmap[i] = NULL;
m_MenuBarBitmap[i] = NULL;
m_MaximizeButtonBitmap[i] = NULL;
m_MinimizeButtonBitmap[i] = NULL;
m_RestoreButtonBitmap[i] = NULL;
m_ExitButtonBitmap[i] = NULL;
m_ToolBarBitmap[i] = NULL;
m_ListCtrlBitmap[i] = NULL;
m_TreeCtrlBitmap[i] = NULL;
m_ButtonBitmap[i] = NULL;
m_StatusBarBitmap[i] = NULL;
m_HeaderCtrlBitmap[i] = NULL;
m_ListCtrlBitmap[i] = NULL;
m_ScrollBarVerticalBitmap[i] = NULL;
m_ScrollBarHorizontalBitmap[i] = NULL;
m_ScrollBarUpArrowBitmap[i] = NULL;
m_ScrollBarLeftArrowBitmap[i] = NULL;
m_ScrollBarDownArrowBitmap[i] = NULL;
m_ScrollBarRightArrowBitmap[i] = NULL;
m_TitleBarBitmapDrawMode[i] = 0;
m_MenuBarBitmapDrawMode[i] = 0;
m_MaximizeButtonBitmapDrawMode[i] = 0;
m_MinimizeButtonBitmapDrawMode[i] = 0;
m_ExitButtonBitmapDrawMode[i] = 0;
m_RestoreButtonBitmapDrawMode[i] = 0;
m_ToolBarBitmapDrawMode[i] = 0;
m_ButtonBitmapDrawMode[i] = 0;
m_TreeCtrlBitmapDrawMode[i] = 0;
m_StatusBarBitmapDrawMode[i] = 0;
m_BorderColor[i] = 0;
m_ListCtrlBitmapDrawMode[i] = 0;
}
}
CRTSkin::~CRTSkin(void)
{
Clear();
}
void CRTSkin::Clear()
{
for(int i = 0; i < 5; i ++)
{
if(m_SplitterWndBitmap[i] != NULL)
{
m_SplitterWndBitmap[i]->DeleteObject();
delete m_SplitterWndBitmap[i];
m_SplitterWndBitmap[i] = NULL;
}
if(m_TitleBarBitmap[i] != NULL)
{
m_TitleBarBitmap[i]->DeleteObject();
delete m_TitleBarBitmap[i];
m_TitleBarBitmap[i] = NULL;
}
if(m_MenuBarBitmap[i] != NULL)
{
m_MenuBarBitmap[i]->DeleteObject();
delete m_MenuBarBitmap[i];
m_MenuBarBitmap[i] = NULL;
}
if(m_MaximizeButtonBitmap[i] != NULL)
{
m_MaximizeButtonBitmap[i]->DeleteObject();
delete m_MaximizeButtonBitmap[i];
m_MaximizeButtonBitmap[i] = NULL;
}
if(m_MinimizeButtonBitmap[i] != NULL)
{
m_MinimizeButtonBitmap[i]->DeleteObject();
delete m_MinimizeButtonBitmap[i];
m_MinimizeButtonBitmap[i] = NULL;
}
if(m_RestoreButtonBitmap[i] != NULL)
{
m_RestoreButtonBitmap[i]->DeleteObject();
delete m_RestoreButtonBitmap[i];
m_RestoreButtonBitmap[i] = NULL;
}
if(m_ExitButtonBitmap[i] != NULL)
{
m_ExitButtonBitmap[i]->DeleteObject();
delete m_ExitButtonBitmap[i];
m_ExitButtonBitmap[i] = NULL;
}
if(m_ToolBarBitmap[i] != NULL)
{
m_ToolBarBitmap[i]->DeleteObject();
delete m_ToolBarBitmap[i];
m_ToolBarBitmap[i] = NULL;
}if(m_ButtonBitmap[i] != NULL)
{
m_ButtonBitmap[i]->DeleteObject();
delete m_ButtonBitmap[i];
m_ButtonBitmap[i] = NULL;
}
if(m_TreeCtrlBitmap[i] != NULL)
{
m_TreeCtrlBitmap[i]->DeleteObject();
delete m_TreeCtrlBitmap[i];
m_TreeCtrlBitmap[i] = NULL;
}
if(m_StatusBarBitmap[i] != NULL)
{
m_StatusBarBitmap[i]->DeleteObject();
delete m_StatusBarBitmap[i];
m_StatusBarBitmap[i] = NULL;
}
if(m_HeaderCtrlBitmap[i] != NULL)
{
m_HeaderCtrlBitmap[i]->DeleteObject();
delete m_HeaderCtrlBitmap[i];
m_HeaderCtrlBitmap[i] = NULL;
}
//
if(m_ScrollBarVerticalBitmap[i] != NULL)
{
m_ScrollBarVerticalBitmap[i]->DeleteObject();
delete m_ScrollBarVerticalBitmap[i];
m_ScrollBarVerticalBitmap[i] = NULL;
}
if(m_ScrollBarHorizontalBitmap[i] != NULL)
{
m_ScrollBarHorizontalBitmap[i]->DeleteObject();
delete m_ScrollBarHorizontalBitmap[i];
m_ScrollBarHorizontalBitmap[i] = NULL;
}
if(m_ScrollBarUpArrowBitmap[i] != NULL)
{
m_ScrollBarUpArrowBitmap[i]->DeleteObject();
delete m_ScrollBarUpArrowBitmap[i];
m_ScrollBarUpArrowBitmap[i] = NULL;
}
if(m_ScrollBarLeftArrowBitmap[i] != NULL)
{
m_ScrollBarLeftArrowBitmap[i]->DeleteObject();
delete m_ScrollBarLeftArrowBitmap[i];
m_ScrollBarLeftArrowBitmap[i] = NULL;
}
if(m_ScrollBarDownArrowBitmap[i] != NULL)
{
m_ScrollBarDownArrowBitmap[i]->DeleteObject();
delete m_ScrollBarDownArrowBitmap[i];
m_ScrollBarDownArrowBitmap[i] = NULL;
}
if(m_ScrollBarRightArrowBitmap[i] != NULL)
{
m_ScrollBarRightArrowBitmap[i]->DeleteObject();
delete m_ScrollBarRightArrowBitmap[i];
m_ScrollBarRightArrowBitmap[i] = NULL;
}
if(m_ListCtrlBitmap[i] != NULL)
{
m_ListCtrlBitmap[i]->DeleteObject();
delete m_ListCtrlBitmap[i];
m_ListCtrlBitmap[i] = NULL;
}
}
}
CBitmap* CRTSkin::LoadBitmap(LPCTSTR lpRelativeFileName)
{
if(lpRelativeFileName == NULL)return NULL;
char StyleFileName[MAX_PATH];
ZeroMemory(StyleFileName,MAX_PATH);
strcpy(StyleFileName,m_BasePath);
strcat(StyleFileName,lpRelativeFileName);
HANDLE hHandle = LoadImage(NULL,StyleFileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTCOLOR);
if(hHandle == NULL)return NULL;
CBitmap* pBitmap = new CBitmap();
if(!pBitmap->Attach(hHandle))
{
DeleteObject(hHandle);
return NULL;
}
return pBitmap;
}
BOOL CRTSkin::Load(LPCTSTR lpStyleFileName)
{
CRTXmlFile cf;
if(!cf.Open(lpStyleFileName))
return FALSE;
char StyleFileName[MAX_PATH];
strcpy(StyleFileName,lpStyleFileName);
int nlen = (int)strlen(lpStyleFileName);
while(nlen > 0)
{
if(StyleFileName[nlen - 1] == '\\')
{
StyleFileName[nlen] = NULL;
break;
}
nlen --;
}
if(nlen == 0)return FALSE;
strcpy(m_BasePath,StyleFileName);
Clear();
CRTXmlItem *pItem = NULL;
pItem = cf.GetItem("ScrollBarHorizontal");
if(pItem != NULL)
{
m_ScrollBarHorizontalBitmap[BMP_BACK] = LoadBitmap(pItem->GetKeyValue("Back"));
m_ScrollBarHorizontalBitmap[BMP_NORMAL] = LoadBitmap(pItem->GetKeyValue("Normal"));
m_ScrollBarHorizontalBitmap[BMP_FOCUS] = LoadBitmap(pItem->GetKeyValue("Focus"));
m_ScrollBarHorizontalBitmap[BMP_DOWN] = LoadBitmap(pItem->GetKeyValue("Down"));
m_ScrollBarHorizontalBitmap[BMP_DISABLE] = LoadBitmap(pItem->GetKeyValue("Disable"));
m_ScrollBarHorizontalBitmapDrawMode[BMP_BACK] = StrToUINT(pItem->GetKeyValue("BackDrawMode"));
m_ScrollBarHorizontalBitmapDrawMode[BMP_NORMAL] = StrToUINT(pItem->GetKeyValue("NormalDrawMode"));
m_ScrollBarHorizontalBitmapDrawMode[BMP_FOCUS] = StrToUINT(pItem->GetKeyValue("FocusDrawMode"));
m_ScrollBarHorizontalBitmapDrawMode[BMP_DOWN] = StrToUINT(pItem->GetKeyValue("DownDrawMode"));
m_ScrollBarHorizontalBitmapDrawMode[BMP_DISABLE] = StrToUINT(pItem->GetKeyValue("DisableDrawMode"));
}
pItem = cf.GetItem("MenuItem");
if(pItem != NULL)
{
m_MenuItemBitmap[BMP_BACK] = LoadBitmap(pItem->GetKeyValue("Back"));
m_MenuItemBitmap[BMP_NORMAL] = LoadBitmap(pItem->GetKeyValue("Normal"));
m_MenuItemBitmap[BMP_FOCUS] = LoadBitmap(pItem->GetKeyValue("Focus"));
m_MenuItemBitmap[BMP_SLIDER] = LoadBitmap(pItem->GetKeyValue("Slider"));
m_MenuItemBitmap[BMP_DISABLE] = LoadBitmap(pItem->GetKeyValue("Disable"));
m_MenuItemBitmapDrawMode[BMP_BACK] = StrToUINT(pItem->GetKeyValue("BackDrawMode"));
m_MenuItemBitmapDrawMode[BMP_NORMAL] = StrToUINT(pItem->GetKeyValue("NormalDrawMode"));
m_MenuItemBitmapDrawMode[BMP_FOCUS] = StrToUINT(pItem->GetKeyValue("FocusDrawMode"));
m_MenuItemBitmapDrawMode[BMP_SLIDER] = StrToUINT(pItem->GetKeyValue("SliderDrawMode"));
m_MenuItemBitmapDrawMode[BMP_DISABLE] = StrToUINT(pItem->GetKeyValue("DisableDrawMode"));
}
pItem = cf.GetItem("ScrollBarVertical");
if(pItem != NULL)
{
m_ScrollBarVerticalBitmap[BMP_BACK] = LoadBitmap(pItem->GetKeyValue("Back"));
m_ScrollBarVerticalBitmap[BMP_NORMAL] = LoadBitmap(pItem->GetKeyValue("Normal"));
m_ScrollBarVerticalBitmap[BMP_FOCUS] = LoadBitmap(pItem->GetKeyValue("Focus"));
m_ScrollBarVerticalBitmap[BMP_DOWN] = LoadBitmap(pItem->GetKeyValue("Down"));
m_ScrollBarVerticalBitmap[BMP_DISABLE] = LoadBitmap(pItem->GetKeyValue("Disable"));
m_ScrollBarVerticalBitmapDrawMode[BMP_BACK] = StrToUINT(pItem->GetKeyValue("BackDrawMode"));
m_ScrollBarVerticalBitmapDrawMode[BMP_NORMAL] = StrToUINT(pItem->GetKeyValue("NormalDrawMode"));
m_ScrollBarVerticalBitmapDrawMode[BMP_FOCUS] = StrToUINT(pItem->GetKeyValue("FocusDrawMode"));
m_ScrollBarVerticalBitmapDrawMode[BMP_DOWN] = StrToUINT(pItem->GetKeyValue("DownDrawMode"));
m_ScrollBarVerticalBitmapDrawMode[BMP_DISABLE] = StrToUINT(pItem->GetKeyValue("DisableDrawMode"));
}
pItem = cf.GetItem("ScrollBarLeftArrow");
if(pItem != NULL)
{
m_ScrollBarLeftArrowBitmap[BMP_BACK] = LoadBitmap(pItem->GetKeyValue("Back"));
m_ScrollBarLeftArrowBitmap[BMP_NORMAL] = LoadBitmap(pItem->GetKeyValue("Normal"));
m_ScrollBarLeftArrowBitmap[BMP_FOCUS] = LoadBitmap(pItem->GetKeyValue("Focus"));
m_ScrollBarLeftArrowBitmap[BMP_DOWN] = LoadBitmap(pItem->GetKeyValue("Down"));
m_ScrollBarLeftArrowBitmap[BMP_DISABLE] = LoadBitmap(pItem->GetKeyValue("Disable"));
m_ScrollBarLeftArrowBitmapDrawMode[BMP_BACK] = StrToUINT(pItem->GetKeyValue("BackDrawMode"));
m_ScrollBarLeftArrowBitmapDrawMode[BMP_NORMAL] = StrToUINT(pItem->GetKeyValue("NormalDrawMode"));
m_ScrollBarLeftArrowBitmapDrawMode[BMP_FOCUS] = StrToUINT(pItem->GetKeyValue("FocusDrawMode"));
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?