📄 gen.cpp
字号:
// Gen.cpp : implementation file
//
#include "stdafx.h"
#include "San9Edit.h"
#include "Gen.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CGen dialog
CGen::CGen(CWnd* pParent /*=NULL*/)
: CDialog(CGen::IDD, pParent)
{
//{{AFX_DATA_INIT(CGen)
//}}AFX_DATA_INIT
buf=NULL;
m_name="";
m_len=0xe7;
m_photo.Load();
}
void CGen::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGen)
DDX_Text(pDX, IDC_PARENT, m_data.Parent);
DDX_Text(pDX, IDC_FRIEND, m_data.Friend);
DDX_Control(pDX, IDC_COMBO_PARENT, m_comb_parent);
DDX_Control(pDX, IDC_COMBO_FRIEND, m_comb_friend);
DDX_Text(pDX, IDC_FIRSTNAME, m_FirstName);
DDV_MaxChars(pDX, m_FirstName, 4);
DDX_Text(pDX, IDC_SECONDNAME, m_SecondName);
DDV_MaxChars(pDX, m_SecondName, 4);
DDX_Text(pDX, IDC_THIRDNAME, m_ThirdName);
DDV_MaxChars(pDX, m_ThirdName, 4);
DDX_Control(pDX, IDC_SLIDER, m_Slider);
DDX_Text(pDX, IDC_BIRTHDAY, m_data.Birthday);
DDV_MinMaxInt(pDX, m_data.Birthday, 135, 265);
DDV_MaxChars(pDX, m_char, 3);
DDX_Text(pDX, IDC_BASIC_COMMAND, m_data.Basic_Command);
DDV_MinMaxInt(pDX, m_data.Basic_Command, 1, 255);
DDV_MaxChars(pDX, m_char, 3);
DDX_Text(pDX, IDC_BASIC_FORCE, m_data.Basic_Force);
DDV_MinMaxInt(pDX, m_data.Basic_Force, 1, 255);
DDV_MaxChars(pDX, m_char, 3);
DDX_Text(pDX, IDC_BASIC_BRAINS, m_data.Basic_Brains);
DDV_MinMaxInt(pDX, m_data.Basic_Brains, 1,255);
DDV_MaxChars(pDX, m_char, 3);
DDX_Text(pDX, IDC_BASIC_POLITY, m_data.Basic_Polity);
DDV_MinMaxInt(pDX, m_data.Basic_Polity, 1, 255);
DDV_MaxChars(pDX, m_char, 3);
DDX_Text(pDX, IDC_BIRTHDAY, m_data.Birthday);
DDV_MinMaxInt(pDX, m_data.Birthday, 135, 265);
DDV_MaxChars(pDX, m_char, 3);
DDX_Text(pDX, IDC_BIOGRAPHY, m_data.Biography);
DDV_MaxChars(pDX, m_char, 150);
DDX_Check(pDX, IDC_EXTRA1_1, m_data.Extra_1[0]);
DDX_Check(pDX, IDC_EXTRA1_2, m_data.Extra_1[1]);
DDX_Check(pDX, IDC_EXTRA1_3, m_data.Extra_1[2]);
DDX_Check(pDX, IDC_EXTRA2_1, m_data.Extra_2[0]);
DDX_Check(pDX, IDC_EXTRA2_2, m_data.Extra_2[1]);
DDX_Check(pDX, IDC_EXTRA2_3, m_data.Extra_2[2]);
DDX_Check(pDX, IDC_EXTRA3_1, m_data.Extra_3[0]);
DDX_Check(pDX, IDC_EXTRA3_2, m_data.Extra_3[1]);
DDX_Check(pDX, IDC_EXTRA3_3, m_data.Extra_3[2]);
DDX_Check(pDX, IDC_EXTRA4_1, m_data.Extra_4[0]);
DDX_Check(pDX, IDC_EXTRA4_2, m_data.Extra_4[1]);
DDX_Check(pDX, IDC_EXTRA4_3, m_data.Extra_4[2]);
DDX_Check(pDX, IDC_EXTRA5_1, m_data.Extra_5[0]);
DDX_Check(pDX, IDC_EXTRA5_2, m_data.Extra_5[1]);
DDX_Check(pDX, IDC_EXTRA5_3, m_data.Extra_5[2]);
DDX_Check(pDX, IDC_EXTRA6_1, m_data.Extra_6[0]);
DDX_Check(pDX, IDC_EXTRA6_2, m_data.Extra_6[1]);
DDX_Check(pDX, IDC_EXTRA6_3, m_data.Extra_6[2]);
DDX_Check(pDX, IDC_EXTRA6_4, m_data.Extra_6[3]);
DDX_Check(pDX, IDC_EXTRA7_1, m_data.Extra_7[0]);
DDX_Check(pDX, IDC_EXTRA7_2, m_data.Extra_7[1]);
DDX_Check(pDX, IDC_EXTRA7_3, m_data.Extra_7[2]);
DDX_Check(pDX, IDC_EXTRA7_4, m_data.Extra_7[3]);
DDX_Check(pDX, IDC_EXTRA8_1, m_data.Extra_8[0]);
DDX_Check(pDX, IDC_EXTRA8_2, m_data.Extra_8[1]);
DDX_Check(pDX, IDC_EXTRA8_3, m_data.Extra_8[2]);
DDX_Check(pDX, IDC_EXTRA8_4, m_data.Extra_8[3]);
DDX_Check(pDX, IDC_EXTRA9_1, m_data.Extra_9[0]);
DDX_Check(pDX, IDC_EXTRA9_2, m_data.Extra_9[1]);
DDX_Check(pDX, IDC_EXTRA9_3, m_data.Extra_9[2]);
DDX_Check(pDX, IDC_EXTRA9_4, m_data.Extra_9[3]);
DDX_Text(pDX, IDC_SKILL1, m_data.Skill1);
DDV_MinMaxInt(pDX, m_data.Skill1, 0, 65535);
DDV_MaxChars(pDX, m_char, 5);
DDX_Text(pDX, IDC_SKILL2, m_data.Skill2);
DDV_MinMaxInt(pDX, m_data.Skill2, 0, 65535);
DDV_MaxChars(pDX, m_char, 5);
DDX_Text(pDX, IDC_SKILL3, m_data.Skill3);
DDV_MinMaxInt(pDX, m_data.Skill3, 0, 65535);
DDV_MaxChars(pDX, m_char, 5);
DDX_Text(pDX, IDC_SKILL4, m_data.Skill4);
DDV_MinMaxInt(pDX, m_data.Skill4, 0, 65535);
DDV_MaxChars(pDX, m_char, 5);
DDX_Text(pDX, IDC_SKILL5, m_data.Skill5);
DDV_MinMaxInt(pDX, m_data.Skill5, 0, 65535);
DDV_MaxChars(pDX, m_char, 5);
DDX_Text(pDX, IDC_SKILL6, m_data.Skill6);
DDV_MinMaxInt(pDX, m_data.Skill6, 0, 65535);
DDV_MaxChars(pDX, m_char, 5);
DDX_Text(pDX, IDC_SKILL7, m_data.Skill7);
DDV_MinMaxInt(pDX, m_data.Skill7, 0, 65535);
DDV_MaxChars(pDX, m_char, 5);
DDX_Text(pDX, IDC_SKILL8, m_data.Skill8);
DDV_MinMaxInt(pDX, m_data.Skill8, 0, 65535);
DDV_MaxChars(pDX, m_char, 5);
DDX_Text(pDX, IDC_SKILL9, m_data.Skill9);
DDV_MinMaxInt(pDX, m_data.Skill9, 0, 65535);
DDV_MaxChars(pDX, m_char, 5);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CGen, CDialog)
//{{AFX_MSG_MAP(CGen)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_MALE, OnMale)
ON_BN_CLICKED(IDC_FEMALE, OnFemale)
ON_BN_CLICKED(IDC_PERSUASIOIN_1, OnPersuasioin1)
ON_BN_CLICKED(IDC_PERSUASIOIN_2, OnPersuasioin2)
ON_BN_CLICKED(IDC_PERSUASIOIN_3, OnPersuasioin3)
ON_BN_CLICKED(IDC_PERSUASIOIN_4, OnPersuasioin4)
ON_BN_CLICKED(IDC_PERSUASIOIN_5, OnPersuasioin5)
ON_BN_CLICKED(IDC_KIDNEY_1, OnKidney1)
ON_BN_CLICKED(IDC_KIDNEY_2, OnKidney2)
ON_BN_CLICKED(IDC_KIDNEY_3, OnKidney3)
ON_BN_CLICKED(IDC_KIDNEY_4, OnKidney4)
ON_BN_CLICKED(IDC_SELECTALL, OnSelectAll)
ON_BN_CLICKED(IDC_SELECTNONE, OnSelectNone)
ON_BN_CLICKED(IDC_MAXSET, OnMaxSet)
ON_BN_CLICKED(IDC_PHOTO_CHANGE, OnPhotoChange)
ON_CBN_DROPDOWN(IDC_COMBO_PARENT, OnDropdownComboParent)
ON_CBN_SELCHANGE(IDC_COMBO_PARENT, OnSelchangeComboParent)
ON_CBN_SELCHANGE(IDC_COMBO_FRIEND, OnSelchangeComboFriend)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER, OnCustomdrawSlider)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER, OnReleasedcaptureSlider)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGen message handlers
BOOL CGen::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_Slider.SetRange(135,265);
InitData();
if(ReadBuffer())
{
ReadData();
UpdateChange();
}
else
UpdateData(FALSE);
CString str;
CString name;
CSan9EditApp *app=(CSan9EditApp*)AfxGetApp();
for(int i=0;i<app->m_GenCode.GetLen();i++)
{
str=app->m_GenCode[i].FirstName;
str+=app->m_GenCode[i].SecondName;
name=m_data.FirstName;
name+=m_data.SecondName;
if(name!=str)
{
m_comb_friend.InsertString(m_comb_friend.GetCount(),str);
if(app->m_GenCode[i].Birthday+15<=m_data.Birthday)
m_comb_parent.InsertString(m_comb_parent.GetCount(),str);
}
}
m_comb_friend.InsertString(m_comb_friend.GetCount(),"无");
m_comb_parent.InsertString(m_comb_parent.GetCount(),"无");
int Parent=-1,Friend=-1;
for(i=0;i<app->m_GenCode.GetLen();i++)
{
if(app->m_GenCode[i].photocode==(int)m_data.Parent)
{
Parent=i;
}
if(app->m_GenCode[i].photocode==(int)m_data.Friend)
{
Friend=i;
}
}
if(Parent!=-1) m_comb_parent.SetCurSel(Parent);
else
m_comb_parent.SetCurSel(m_comb_parent.GetCount()-1);
if(Friend!=-1) m_comb_friend.SetCurSel(Friend);
else
m_comb_friend.SetCurSel(m_comb_parent.GetCount()-1);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CGen::OnDropdownComboParent()
{
UpdateData();
CString str,name;
CString title;
m_comb_parent.GetLBText(m_comb_parent.GetCurSel(),title);
CSan9EditApp *app=(CSan9EditApp*)AfxGetApp();
m_comb_parent.ResetContent();
int index=-1;
for(int i=0;i<app->m_GenCode.GetLen();i++)
{
str=app->m_GenCode[i].FirstName;
str+=app->m_GenCode[i].SecondName;
name=m_data.FirstName;
name+=m_data.SecondName;
if(name!=str)
{
if(app->m_GenCode[i].Birthday+15<=m_data.Birthday)
m_comb_parent.InsertString(m_comb_parent.GetCount(),str);
}
if(str==title) index=i;
}
m_comb_parent.InsertString(m_comb_parent.GetCount(),"无");
if(title!=-1) m_comb_parent.SetCurSel(index);
else m_comb_parent.SetCurSel(m_comb_parent.GetCount()-1);
}
void CGen::OnSelchangeComboParent()
{
CString str;
CString name;
m_comb_parent.GetLBText(m_comb_parent.GetCurSel(),name);
CSan9EditApp *app=(CSan9EditApp*)AfxGetApp();
for(int i=0;i<app->m_GenCode.GetLen();i++)
{
str=app->m_GenCode[i].FirstName;
str+=app->m_GenCode[i].SecondName;
if(str==name)
{
m_data.Parent=app->m_GenCode[i].photocode;
UpdateData(FALSE);
break;
}
else
if(name=="无")
{
m_data.Parent=65535;
UpdateData(FALSE);
break;
}
}
}
void CGen::OnSelchangeComboFriend()
{
CString str;
CString name;
m_comb_friend.GetLBText(m_comb_friend.GetCurSel(),name);
CSan9EditApp *app=(CSan9EditApp*)AfxGetApp();
for(int i=0;i<app->m_GenCode.GetLen();i++)
{
str=app->m_GenCode[i].FirstName;
str+=app->m_GenCode[i].SecondName;
if(str==name)
{
m_data.Friend=app->m_GenCode[i].photocode;
UpdateData(FALSE);
break;
}
else
if(name=="无")
{
m_data.Friend=65535;
UpdateData(FALSE);
break;
}
}
}
void CGen::OnPaint()
{
CPaintDC dc(this);
CRect rc;
this->GetClientRect(&rc);
rc.left=12;
rc.top=42;
rc.right=rc.left+60;
rc.bottom=rc.top+77;
if(m_data.photo!=0xffff)
m_photo.DrawSingle(dc.m_hDC,m_data.photo-PHOTO_SEEK,rc);
}
void CGen::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
if(buf!=NULL) delete[] buf;
}
void CGen::UpdateChange()
{
m_FirstName=m_data.FirstName;
m_SecondName=m_data.SecondName;
m_ThirdName=m_data.ThirdName;
m_Slider.SetPos(m_data.Birthday);
UpdateData(FALSE);
CButton button;
//性别
if(m_data.Sex)
{
button.SubclassDlgItem(IDC_MALE,this);
button.SetCheck(TRUE);
button.UnsubclassWindow();
}
else
{
button.SubclassDlgItem(IDC_FEMALE,this);
button.SetCheck(TRUE);
button.UnsubclassWindow();
}
//信念
switch(m_data.Persuasion)
{
case 1:
button.SubclassDlgItem(IDC_PERSUASIOIN_1,this);
button.SetCheck(TRUE);
button.UnsubclassWindow();
break;
case 2:
button.SubclassDlgItem(IDC_PERSUASIOIN_2,this);
button.SetCheck(TRUE);
button.UnsubclassWindow();
break;
case 3:
button.SubclassDlgItem(IDC_PERSUASIOIN_3,this);
button.SetCheck(TRUE);
button.UnsubclassWindow();
break;
case 4:
button.SubclassDlgItem(IDC_PERSUASIOIN_4,this);
button.SetCheck(TRUE);
button.UnsubclassWindow();
break;
case 5:
button.SubclassDlgItem(IDC_PERSUASIOIN_5,this);
button.SetCheck(TRUE);
button.UnsubclassWindow();
break;
default:
break;
}
//性格
switch(m_data.Kidney)
{
case 1:
button.SubclassDlgItem(IDC_KIDNEY_1,this);
button.SetCheck(TRUE);
button.UnsubclassWindow();
break;
case 2:
button.SubclassDlgItem(IDC_KIDNEY_2,this);
button.SetCheck(TRUE);
button.UnsubclassWindow();
break;
case 3:
button.SubclassDlgItem(IDC_KIDNEY_3,this);
button.SetCheck(TRUE);
button.UnsubclassWindow();
break;
case 4:
button.SubclassDlgItem(IDC_KIDNEY_4,this);
button.SetCheck(TRUE);
button.UnsubclassWindow();
break;
default:
break;
}
}
void CGen::InitData()
{
for(int i=0;i<4;i++)
{
if(i<3)
{
m_data.Extra_1[i]=0;
m_data.Extra_2[i]=0;
m_data.Extra_3[i]=0;
m_data.Extra_4[i]=0;
m_data.Extra_5[i]=0;
}
m_data.Extra_6[i]=0;
m_data.Extra_7[i]=0;
m_data.Extra_8[i]=0;
m_data.Extra_9[i]=0;
}
m_data.Birthday=135;
m_data.Basic_Brains=1;
m_data.Basic_Command=1;
m_data.Basic_Force=1;
m_data.Basic_Polity=1;
m_data.Skill1=0;
m_data.Skill2=0;
m_data.Skill3=0;
m_data.Skill4=0;
m_data.Skill5=0;
m_data.Skill6=0;
m_data.Skill7=0;
m_data.Skill8=0;
m_data.Skill9=0;
}
//性别
void CGen::OnMale()
{
// TODO: Add your control notification handler code here
int result=this->GetCheckedRadioButton(IDC_MALE,IDC_FEMALE);
if(result==IDC_MALE) m_data.Sex=TRUE;
else m_data.Sex=FALSE;
}
void CGen::OnFemale()
{
// TODO: Add your control notification handler code here
int result=this->GetCheckedRadioButton(IDC_MALE,IDC_FEMALE);
if(result==IDC_FEMALE) m_data.Sex=FALSE;
else m_data.Sex=TRUE;
}
//信念
void CGen::OnPersuasioin1()
{
// TODO: Add your control notification handler code here
int result=this->GetCheckedRadioButton(IDC_PERSUASIOIN_1,IDC_PERSUASIOIN_5);
if(result==IDC_PERSUASIOIN_1) m_data.Persuasion=1;
}
void CGen::OnPersuasioin2()
{
// TODO: Add your control notification handler code here
int result=this->GetCheckedRadioButton(IDC_PERSUASIOIN_1,IDC_PERSUASIOIN_5);
if(result==IDC_PERSUASIOIN_2) m_data.Persuasion=2;
}
void CGen::OnPersuasioin3()
{
// TODO: Add your control notification handler code here
int result=this->GetCheckedRadioButton(IDC_PERSUASIOIN_1,IDC_PERSUASIOIN_5);
if(result==IDC_PERSUASIOIN_3) m_data.Persuasion=3;
}
void CGen::OnPersuasioin4()
{
// TODO: Add your control notification handler code here
int result=this->GetCheckedRadioButton(IDC_PERSUASIOIN_1,IDC_PERSUASIOIN_5);
if(result==IDC_PERSUASIOIN_4) m_data.Persuasion=4;
}
void CGen::OnPersuasioin5()
{
// TODO: Add your control notification handler code here
int result=this->GetCheckedRadioButton(IDC_PERSUASIOIN_1,IDC_PERSUASIOIN_5);
if(result==IDC_PERSUASIOIN_5) m_data.Persuasion=5;
}
//性格
void CGen::OnKidney1()
{
// TODO: Add your control notification handler code here
int result=this->GetCheckedRadioButton(IDC_KIDNEY_1,IDC_KIDNEY_4);
if(result==IDC_KIDNEY_1) m_data.Kidney=1;
}
void CGen::OnKidney2()
{
// TODO: Add your control notification handler code here
int result=this->GetCheckedRadioButton(IDC_KIDNEY_1,IDC_KIDNEY_4);
if(result==IDC_KIDNEY_2) m_data.Kidney=2;
}
void CGen::OnKidney3()
{
// TODO: Add your control notification handler code here
int result=this->GetCheckedRadioButton(IDC_KIDNEY_1,IDC_KIDNEY_4);
if(result==IDC_KIDNEY_3) m_data.Kidney=3;
}
void CGen::OnKidney4()
{
// TODO: Add your control notification handler code here
int result=this->GetCheckedRadioButton(IDC_KIDNEY_1,IDC_KIDNEY_4);
if(result==IDC_KIDNEY_4) m_data.Kidney=4;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -