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

📄 cstatic.cpp

📁 墨香完整原代码 C++ 值得研究 可以编译
💻 CPP
字号:
// cStatic.cpp: implementation of the cStatic class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "cStatic.h"
#include "cFont.h"
#include "cWindowFunc.h"
#include "MHFile.h"


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////


cStatic::cStatic()
{
	m_type = WT_STATIC;
	m_fMultiLine = FALSE;
	*m_szStaticText = 0;
	m_textXY.x = 0;
	m_textXY.y = 0;
	m_fgColor = RGB_HALF(255,255,255);
	m_bShadow = FALSE;
	m_shadowTextXY.x = 1;
	m_shadowTextXY.y = 1;
	m_shadowColor = RGB_HALF(10,10,10);
}

cStatic::~cStatic()
{
	m_StaticText.Release();
}
void cStatic::InitMultiLine()
{
	if(m_fMultiLine)
	{
		m_StaticText.Init(m_wFontIdx, m_fgColor, NULL);
	}
}

void cStatic::SetFontIdx(WORD fontIdx)
{ 
	m_wFontIdx = fontIdx;
	m_StaticText.SetFontIdx(fontIdx);
}

void cStatic::Render()
{
	cWindow::Render();

	if(!m_fMultiLine)
	{	
		if(*m_szStaticText != 0)
		{
			LONG TxtPosX;

			if( m_nAlign & TXT_LEFT )
			{
				TxtPosX = (LONG)m_absPos.x + m_textXY.x;
			}
			else if( m_nAlign & TXT_RIGHT )
			{
				TxtPosX = (LONG)m_absPos.x + m_width - m_textXY.x 
					      - CFONT_OBJ->GetTextExtentEx( m_wFontIdx, m_szStaticText, strlen(m_szStaticText) );
			}
			else //TXT_CENTER
			{
				TxtPosX = (LONG)m_absPos.x + ( m_width
					      - CFONT_OBJ->GetTextExtentEx( m_wFontIdx, m_szStaticText, strlen(m_szStaticText) ) ) / 2;
			}

//			RECT rect={(LONG)m_absPos.x+m_textXY.x+m_shadowTextXY.x, (LONG)m_absPos.y+m_textXY.y+m_shadowTextXY.y, 1,1};
			RECT rect={ TxtPosX, (LONG)m_absPos.y + m_textXY.y, 1, 1 };

			if( m_bShadow )
			{
				RECT rcShadow = rect;
				OffsetRect( &rcShadow, m_shadowTextXY.x, m_shadowTextXY.y );
				CFONT_OBJ->RenderFont(m_wFontIdx,m_szStaticText,lstrlen(m_szStaticText),
							&rcShadow,RGBA_MERGE(m_shadowColor, m_alpha * m_dwOptionAlpha / 100));
			}

			//foreground color
			CFONT_OBJ->RenderFont(m_wFontIdx,m_szStaticText,lstrlen(m_szStaticText),
							&rect,RGBA_MERGE(m_fgColor, m_alpha * m_dwOptionAlpha / 100));
		}
	}
	else
	{
		if(m_StaticText.IsValid())
		{
			if(CFONT_OBJ->IsCreateFont(m_wFontIdx))
			{
				m_StaticText.SetXY((LONG)m_absPos.x+m_textXY.x, (LONG)m_absPos.y+m_textXY.y);
				m_StaticText.Render();
			}
		}
	}
}

void cStatic::SetStaticText(char * text)
{
	if(!m_fMultiLine)
	{
		char buf[256]={0,};
		char * aa = &buf[0];
		_parsingKeywordString(text, &aa);
		strcpy(m_szStaticText, buf); 
	}
	else
	{
		m_StaticText = text;
	}

}

⌨️ 快捷键说明

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