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 + -
显示快捷键?