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

📄 gen.cpp

📁 三国志IX武将编辑器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -