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

📄 static.cpp

📁 3D游戏展示程序
💻 CPP
字号:
//--------------------------------------------------
//  Desc: Static Text
//  Author: artsylee/2006.11.16
//--------------------------------------------------
#include "../stdafx.h"
#include "Static.h"
#include "../Core/IniFile.h"
#include "../Core/Message.h"
#include "../Core/Interface.h"
#include "../Core/Common.h"
#include "../Core/Input.h"

GStatic::GStatic(CWindow* pParent):CWindow(pParent)
{
	m_dwGUIType = GUI_STATIC;
	m_bLeft = true;
}

GStatic::~GStatic()
{
}

bool GStatic::LoadFromIni(char* pfilename, char* pIndex)
{
	CIniFile ui(pfilename);
	m_dwID = ui.ReadDWORD(pIndex, "ID");
	m_ptPos = ui.ReadPoint(pIndex, "Position");
	m_dwColor = ui.ReadDWORD(pIndex, "Color", 0xffffffff);
	m_dwAttrib = ui.ReadDWORD(pIndex, "Attrib", 10);
	ui.ReadString(pIndex, "Caption", m_szCaption);
	char fontname[32];
	ui.ReadString(pIndex, "FontName", fontname, "宋体");
	int fontsize = ui.ReadInt(pIndex, "FontSize", 16);
	m_Font.CreateFont(fontname, fontsize);
	m_rcSrc = m_Font.GetStringRect(m_szCaption);
	if(m_pParent)
	{
		OffSet(m_pParent->GetRect().left, m_pParent->GetRect().top);
	}
	return true;
}

void GStatic::Render()
{
	if(m_dwAttrib & GUI_VISIBLE)
	{
		if(m_szCaption[0] != 0)
		m_Font.DrawText(m_ptPos.x, m_ptPos.y, m_dwColor, !m_bLeft, m_szCaption);
	}
}

DWORD GStatic::ProcessEvent()
{
	if(!(m_dwAttrib & GUI_VISIBLE) || !(m_dwAttrib & GUI_ENABLE))
	{
		return INVALID_ID;
	}
	
	GRect rcPos;
	rcPos.SetRectWH(m_ptPos.x, m_ptPos.y, m_rcSrc.Width(), m_rcSrc.Height());
	if(CheckInRGN(rcPos))
	{
		if(g_stInputInfo.MouseValue==LB_DOWN)
		{
			//发送MOUSEDOWN信息
			//OutputDebugString("LB mouse down\n");
			CMessage msg(MSG_SYS_GUI, m_dwID);
			msg.SetParameter(GUI_MOUSE_LDOWN, m_dwGUIType, this);
			PostMessage(msg);

			return m_dwID;
		}
	}

	return INVALID_ID;
}

void GStatic::SetCaption(const char *szCaption)
{
	if(!szCaption || strlen(szCaption)>255)
		return;
	strcpy(m_szCaption, szCaption);
	m_rcSrc = m_Font.GetStringRect(m_szCaption);
}

void GStatic::GetCaption(char *szCaption)
{
	if(szCaption)
		strcpy(szCaption, m_szCaption);
}

//--------------------------------------------------
// Multi-Line Static
//--------------------------------------------------
MLStatic::MLStatic(CWindow* pParent):CWindow(pParent)
{
	m_dwGUIType = GUI_COOLSTATIC;
}

MLStatic::~MLStatic()
{
}

bool MLStatic::LoadFromIni(char* pfilename, char* pIndex)
{
	CIniFile ui(pfilename);
	m_dwID = ui.ReadDWORD(pIndex, "ID");
	m_ptPos = ui.ReadPoint(pIndex, "Position");
	m_dwColor = ui.ReadDWORD(pIndex, "Color", 0xffffffff);
	m_dwAttrib = ui.ReadDWORD(pIndex, "Attrib", 10);
	ui.ReadString(pIndex, "Caption", m_szInfo);
	char fontname[32];
	ui.ReadString(pIndex, "FontName", fontname, "宋体");
	int fontsize = ui.ReadInt(pIndex, "FontSize", 16);
	m_Font.CreateFont(fontname, fontsize);
	if(m_pParent)
	{
		OffSet(m_pParent->GetRect().left, m_pParent->GetRect().top);
	}
	return true;
}

void MLStatic::Render()
{
	if(m_dwAttrib & GUI_VISIBLE)
	{
		if(m_szInfo[0] != 0)
			m_Font.DrawText(m_ptPos.x, m_ptPos.y, m_dwColor, m_szInfo);
	}
}

DWORD MLStatic::ProcessEvent()
{
	if(!(m_dwAttrib & GUI_VISIBLE) || !(m_dwAttrib & GUI_ENABLE))
	{
		return INVALID_ID;
	}

	GRect rcPos;
	rcPos.SetRectWH(m_ptPos.x, m_ptPos.y, m_rcSrc.Width(), m_rcSrc.Height());
	if(CheckInRGN(rcPos))
	{
		if(g_stInputInfo.MouseValue==LB_DOWN)
		{
			//发送MOUSEDOWN信息
			//OutputDebugString("LB mouse down\n");
			CMessage msg(MSG_SYS_GUI, m_dwID);
			msg.SetParameter(GUI_MOUSE_LDOWN, m_dwGUIType, this);
			PostMessage(msg);

			return m_dwID;
		}
	}

	return INVALID_ID;
}

void MLStatic::SetCaption(const char *szCaption)
{
	if(!szCaption || strlen(szCaption)>4095)
		return;
	strcpy(m_szInfo, szCaption);
}

void MLStatic::GetCaption(char *szCaption)
{
	if(szCaption)
		strcpy(szCaption, m_szInfo);
}

GFont* MLStatic::GetFont(void)
{
	return &m_Font;
}

GRect MLStatic::GetFontRect()
{
	return m_Font.GetStringRectMultiLine(m_szInfo);
}

⌨️ 快捷键说明

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