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

📄 radiogroup.cpp

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

RadioGroup::RadioGroup(CWindow* pParent):CWindow(pParent)
{
	m_dwGUIType = GUI_RADIOGROUP;
	m_pCheckBox = NULL;
	m_BoxNum = 0;
	m_XOffset = 0;
	m_YOffset = 0;
}

RadioGroup::~RadioGroup()
{
	S_DELETE_ARRAY(m_pCheckBox);
	m_BoxNum = 0;
}

bool RadioGroup::LoadFromIni(char* pfilename, char* pIndex)
{
	S_DELETE(m_pCheckBox);
	CIniFile ui(pfilename);
	m_BoxNum = ui.ReadInt(pIndex, "RadioNum");
	if(!m_BoxNum)	return false;
	m_dwID = ui.ReadDWORD(pIndex, "ID");
	m_ptPos = ui.ReadPoint(pIndex, "Position");
	m_XOffset = ui.ReadInt(pIndex, "XOffset", 30);
	m_YOffset = ui.ReadInt(pIndex, "YOffset", 30);
	// 注意: 在此需要传入pParent参数.
	m_pCheckBox = new CCheckBox[m_BoxNum];
	if(m_pCheckBox==NULL)	
		return false;
	char szTemp[32];
	for(int i=0; i<m_BoxNum; i++)
	{
		m_pCheckBox[i].LoadFromIni(pfilename, pIndex);
		sprintf(szTemp, "SubID%d", i);
		m_pCheckBox[i].SetID(ui.ReadDWORD(pIndex, szTemp));
		m_pCheckBox[i].OffSet(i*m_XOffset, i*m_YOffset);
		m_pCheckBox[i].OffSet(m_pParent->GetRect().left, m_pParent->GetRect().top);
		m_pCheckBox[i].SetDependent();
	}
	int select = ui.ReadInt(pIndex, "Select", 30);
	if(select>=m_BoxNum || select<0)
		select = 0;
	for(int i=0; i<m_BoxNum; i++)
	{
		m_pCheckBox[i].SetSelect(false);
	}
	m_pCheckBox[select].SetSelect();
	/*
	if(m_pParent)
	{
		OffSet(m_pParent->GetRect().left, m_pParent->GetRect().top);
	}
	*/
	return true;
}

void RadioGroup::OffSet(int x, int y)
{
	CWindow::OffSet(x, y);
	for(int i=0; i<m_BoxNum; i++)
	{
		m_pCheckBox[i].OffSet(x, y);
	}
}

void RadioGroup::Render()
{
	for(int i=0; i<m_BoxNum; i++)
	{
		m_pCheckBox[i].Render();
	}
}

DWORD RadioGroup::ProcessEvent()
{
	DWORD dwID;
	for(int i=0; i<m_BoxNum; i++)
	{
		dwID = m_pCheckBox[i].ProcessEvent();
		if(dwID)
			break;
	}
	if(i<m_BoxNum)
	{
		bool bValueChange = false;
		for(int j=0; j<m_BoxNum; j++)
		{
			if(j!=i)
			{
				if(m_pCheckBox[j].GetSelect())
				{
					bValueChange = true;
					m_pCheckBox[j].SetSelect(false);
				}
			}
		}
		if(bValueChange)
		{
			//发送ValueChange信息
			CMessage msg(MSG_SYS_GUI, m_dwID);
			msg.SetParameter(GUI_VALUE_CHANGE, dwID, this);
			PostMessage(msg);
		}
		
		return m_dwID;
	}
	return INVALID_ID;
}

DWORD RadioGroup::GetSelectedID()
{
	for(int i=0; i<m_BoxNum; i++)
	{
		if(m_pCheckBox[i].GetSelect())
		{
			return m_pCheckBox[i].GetID();
		}
	}
	return INVALID_ID;
}

int RadioGroup::GetSelectedIndex()
{
	for(int i=0; i<m_BoxNum; i++)
	{
		if(m_pCheckBox[i].GetSelect())
		{
			break;
		}
	}
	if(i<m_BoxNum)
		return i;
	else
		return -1;
}

⌨️ 快捷键说明

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