📄 radiogroup.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 + -