?? paractrl.cpp
字號:
// ParaCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "Global.h"
#include "Faction.h"
#include "ParaCtrl.h"
#include "FactionDoc.h"
#include "FactionView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CParaCtrl dialog
CParaCtrl::CParaCtrl(CWnd* pParent /*=NULL*/)
: CDialog(CParaCtrl::IDD, pParent)
{
//{{AFX_DATA_INIT(CParaCtrl)
m_nNN = 5;
m_dRV = 0.0;
m_dAA = 0.0;
m_dRP = 0.0;
m_dX1 = 2.0;
m_dX2 = 1.5;
m_dY1 = -2.0;
m_dY2 = -1.5;
m_nFA = 7;
m_nRanSpec = 1;
m_nFC = 1;
m_dYsjb = 0.0;
m_nB = 0;
m_nG = 0;
m_nR = 0;
//}}AFX_DATA_INIT
m_dT17=0, m_dT30=0, m_dT31=0;
}
void CParaCtrl::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CParaCtrl)
DDX_Control(pDX, IDC_SPIN_R, m_spinR);
DDX_Control(pDX, IDC_SPIN_G, m_spinG);
DDX_Control(pDX, IDC_SPIN_B, m_spinB);
DDX_Control(pDX, IDC_COMBO_PARAM_TX4, m_comboTX4);
DDX_Control(pDX, IDC_COMBO_PARAM_TX3, m_comboTX3);
DDX_Control(pDX, IDC_COMBO_PARAM_TX2, m_comboTX2);
DDX_Control(pDX, IDC_COMBO_PARAM_TX1, m_comboTX1);
DDX_Text(pDX, IDC_EDIT_N_VALUE, m_nNN);
DDV_MinMaxInt(pDX, m_nNN, 2, 99999999);
DDX_Text(pDX, IDC_EDIT_SEL_RV, m_dRV);
DDX_Text(pDX, IDC_EDIT_SEL_A, m_dAA);
DDX_Text(pDX, IDC_EDIT_SEL_RP, m_dRP);
DDX_Text(pDX, IDC_EDIT_X1, m_dX1);
DDX_Text(pDX, IDC_EDIT_X2, m_dX2);
DDX_Text(pDX, IDC_EDIT_Y1, m_dY1);
DDX_Text(pDX, IDC_EDIT_Y2, m_dY2);
DDX_Radio(pDX, IDC_RADIO_FA1, m_nFA);
DDX_Radio(pDX, IDC_RADIO_RANDOM, m_nRanSpec);
DDX_Radio(pDX, IDC_RADIO_SEL_FC, m_nFC);
DDX_Text(pDX, IDC_EDIT_YSJB, m_dYsjb);
DDX_Text(pDX, IDC_EDIT_B, m_nB);
DDV_MinMaxInt(pDX, m_nB, 0, 255);
DDX_Text(pDX, IDC_EDIT_G, m_nG);
DDV_MinMaxInt(pDX, m_nG, 0, 255);
DDX_Text(pDX, IDC_EDIT_R, m_nR);
DDV_MinMaxInt(pDX, m_nR, 0, 255);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CParaCtrl, CDialog)
//{{AFX_MSG_MAP(CParaCtrl)
ON_BN_CLICKED(IDC_BTN_SAVE_PARAM, OnBtnSaveParam)
ON_BN_CLICKED(IDC_BTN_LOAD_PARAM, OnBtnLoadParam)
ON_BN_CLICKED(IDC_RADIO_SEL_FC, OnRadioSelFc)
ON_BN_CLICKED(IDC_RADIO_SEL_FC1, OnRadioSelFc1)
ON_BN_CLICKED(IDC_RADIO_SEL_FC2, OnRadioSelFc2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CParaCtrl message handlers
BOOL CParaCtrl::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_spinR.SetBuddy(GetDlgItem(IDC_EDIT_R));
m_spinG.SetBuddy(GetDlgItem(IDC_EDIT_G));
m_spinB.SetBuddy(GetDlgItem(IDC_EDIT_B));
m_spinR.SetRange(0,255);
m_spinG.SetRange(0,255);
m_spinB.SetRange(0,255);
m_spinR.SetPos(68);
m_spinG.SetPos(228);
m_spinB.SetPos(158);
//////////////////////////
//顯示“參數控制面板”前的準備
m_dX1 = G.m_dSeData[0][1];
m_dY1 = G.m_dSeData[0][2];
m_dX2 = G.m_dSeData[0][3];
m_dY2 = G.m_dSeData[0][4];
if(G.m_dSeData[0][5] == 1)
m_nRanSpec = 0;
else
m_nRanSpec = 1;
m_nR = (int)G.m_dSeData[0][6];
m_nG = (int)G.m_dSeData[0][7];
m_nB = (int)G.m_dSeData[0][8];
m_dYsjb = G.m_dSeData[0][9];
m_dT30 = G.m_dSeData[0][10];
m_dT31 = G.m_dSeData[0][11];
m_dT17 = G.m_dSeData[0][12];
m_nFC = (int)G.m_dSeData[0][13]-1;
switch(m_nFC)
{
case 0: OnRadioSelFc(); break;
case 1: OnRadioSelFc1(); break;
case 2: OnRadioSelFc2(); break;
}
m_nNN = (int)G.m_dSeData[0][14];
m_dAA = G.m_dSeData[0][15];
m_comboTX1.SetCurSel(int(G.m_dSeData[0][16]) % 100);
m_comboTX2.SetCurSel(int(G.m_dSeData[0][16]*0.01) % 100);
m_comboTX3.SetCurSel(int(G.m_dSeData[0][16]*0.0001) % 100);
m_comboTX4.SetCurSel(int(G.m_dSeData[0][16]*0.000001) % 100);
m_dRP = G.m_dSeData[0][17];
m_dRV = G.m_dSeData[0][18];
m_nFA = (int)G.m_dSeData[0][19];
//////////////////////////
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CParaCtrl::OnBtnSaveParam()
{
UpdateData();
//保存當前設置好的參數,保存為 *.HTXT 文件
// SeData(-1, 0) = 1
static char BASED_CODE szFilter[] = "HTXT Files (*.HTXT)|*.HTXT|All Files (*.*)|*.*||";
CFileDialog fileDlg(FALSE, NULL, "*.htxt",
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, szFilter, this);
fileDlg.m_ofn.lpstrTitle = "選擇HTXT文件";
char cPath[128];
CString csFile;
GetCurrentDirectory(128, cPath);
fileDlg.m_ofn.lpstrInitialDir = cPath;
if( fileDlg.DoModal() == IDOK)
{
csFile = fileDlg.GetPathName();
if( ! csFile.GetLength() )
return;
}
G.m_dSeData0[0][0] = 1;
G.m_dSeData0[0][1] = m_dX1;
G.m_dSeData0[0][2] = m_dY1;
G.m_dSeData0[0][3] = m_dX2;
G.m_dSeData0[0][4] = m_dY2;
if(!m_nRanSpec)
G.m_dSeData0[0][5] = 1;
else
G.m_dSeData0[0][5] = 0;
G.m_dSeData0[0][6] = m_nR;
G.m_dSeData0[0][7] = m_nG;
G.m_dSeData0[0][8] = m_nB;
G.m_dSeData0[0][9] = m_dYsjb;
G.m_dSeData0[0][10] = m_dT30;//Val(Me.Text30.Text)
G.m_dSeData0[0][11] = m_dT31;//Val(Me.Text31.Text)
G.m_dSeData0[0][12] = m_dT17;//Val(Me.Text17.Text)
G.m_dSeData0[0][13] = m_nFC+1;
G.m_dSeData0[0][14] = m_nNN;
G.m_dSeData0[0][15] = m_dAA;
G.m_dSeData0[0][16] = m_comboTX1.GetCurSel() * 1
+ m_comboTX2.GetCurSel() * 100
+ m_comboTX3.GetCurSel() * 10000
+ m_comboTX4.GetCurSel() * 1000000;
G.m_dSeData0[0][17] = m_dRP;
G.m_dSeData0[0][18] = m_dRV;
G.m_dSeData0[0][19] = m_nFA;
CStdioFile slf;
if(slf.Open(csFile,CFile::modeCreate|CFile::modeReadWrite))//CFile::modeNoTruncate|
{
CString cont;
for(int i=0; i<20; i++)
{
cont.Format("%f\n", G.m_dSeData0[0][i]);
slf.WriteString(cont);
}
slf.Close();
}
SetCurrentDirectory(cPath);
}
void CParaCtrl::OnBtnLoadParam()
{ //載入參數文件并顯示
static char BASED_CODE szFilter[] = "HTXT Files (*.HTXT)|*.HTXT|All Files (*.*)|*.*||";
CFileDialog fileDlg(TRUE, NULL, "*.htxt",
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, szFilter, this);
fileDlg.m_ofn.lpstrTitle = "選擇HTXT文件";
char cPath[128];
CString csFile;
GetCurrentDirectory(128, cPath);
fileDlg.m_ofn.lpstrInitialDir = cPath;
if( fileDlg.DoModal() == IDOK)
{
csFile = fileDlg.GetPathName();
if( ! csFile.GetLength() )
return;
}
SetCurrentDirectory(cPath);
CStdioFile slf;
if(slf.Open(csFile,CFile::modeCreate|CFile::modeReadWrite))//CFile::modeNoTruncate|
{
CString cont;
for(int i=0; slf.ReadString(cont); i++)
{
G.m_dSeData0[0][i] = atof((char *&)cont);
}
slf.Close();
}
else{
MessageBox(" 打開文件時出錯 (或者其它錯誤) !", " 錯誤", MB_OK);
return;
}
m_dX1 = G.m_dSeData0[0][1];
m_dY1 = G.m_dSeData0[0][2];
m_dX2 = G.m_dSeData0[0][3];
m_dY2 = G.m_dSeData0[0][4];
m_nRanSpec = 1;
m_nR = (int)G.m_dSeData0[0][6];
m_nG = (int)G.m_dSeData0[0][7];
m_nB = (int)G.m_dSeData0[0][8];
m_dYsjb = G.m_dSeData0[0][9];
m_dT30 = G.m_dSeData0[0][10];
m_dT31 = G.m_dSeData0[0][11];
m_dT17 = G.m_dSeData0[0][12];
m_nFC = (int)G.m_dSeData0[0][13] - 1;
m_nNN = (int)G.m_dSeData0[0][14];
m_dAA = G.m_dSeData0[0][15];
m_comboTX1.SetCurSel(int(G.m_dSeData0[0][16]) % 100);
m_comboTX2.SetCurSel(int(G.m_dSeData0[0][16]*0.01) % 100);
m_comboTX3.SetCurSel(int(G.m_dSeData0[0][16]*0.0001) % 100);
m_comboTX4.SetCurSel(int(G.m_dSeData0[0][16]*0.000001) % 100);
m_dRP = G.m_dSeData0[0][17];
m_dRV = G.m_dSeData0[0][18];
m_nFA = (int)G.m_dSeData0[0][19];
UpdateData(FALSE);
}
void CParaCtrl::OnOK()
{
// TODO: Add extra validation here
UpdateData();
G.m_nR = m_spinR.GetPos();
G.m_nB = m_spinG.GetPos();
G.m_nG = m_spinB.GetPos();
//確認參數設置
G.SeDataIN();
G.m_dSeData[0][0] = 1;
G.m_dSeData[0][1] = m_dX1;
G.m_dSeData[0][2] = m_dY1;
G.m_dSeData[0][3] = m_dX2;
G.m_dSeData[0][4] = m_dY2;
if(!m_nRanSpec)
G.m_dSeData[0][5] = 1;
else
G.m_dSeData[0][5] = 0;
G.m_dSeData[0][6] = m_nR;
G.m_dSeData[0][7] = m_nG;
G.m_dSeData[0][8] = m_nB;
G.m_dSeData[0][9] = m_dYsjb;
G.m_dSeData[0][10] = m_dT30;//Val(Me.Text30.Text)
G.m_dSeData[0][11] = m_dT31;//Val(Me.Text31.Text)
G.m_dSeData[0][12] = m_dT17;//Val(Me.Text17.Text)
G.m_dSeData[0][13] = m_nFC+1;
G.m_dSeData[0][14] = m_nNN;
G.m_dSeData[0][15] = m_dAA;
G.m_dSeData[0][16] = m_comboTX1.GetCurSel() * 1
+ m_comboTX2.GetCurSel() * 100
+ m_comboTX3.GetCurSel() * 10000
+ m_comboTX4.GetCurSel() * 1000000;
G.m_dSeData[0][17] = m_dRP;
G.m_dSeData[0][18] = m_dRV;
G.m_dSeData[0][19] = m_nFA;
//Call frmMain.Command1_Click
//g_document.UpdateAllViews(NULL);
/* POSITION pos = g_document.GetFirstViewPosition();
while(pos != NULL)
{
CFactionView* pView = (CFactionView*)g_document.GetNextView(pos);
if(pView->IsKindOf(RUNTIME_CLASS(CFactionView)))
pView->RedrawWindow();
}*/
CDialog::OnOK();
}
void CParaCtrl::OnRadioSelFc()
{
// TODO: Add your control notification handler code here
SelDisplay(FALSE);
GetDlgItem(IDC_EDIT_N_VALUE)->EnableWindow(TRUE);
}
void CParaCtrl::OnRadioSelFc1()
{
// TODO: Add your control notification handler code here
SelDisplay(FALSE);
GetDlgItem(IDC_EDIT_N_VALUE)->EnableWindow(FALSE);
}
void CParaCtrl::OnRadioSelFc2()
{
// TODO: Add your control notification handler code here
SelDisplay(TRUE);
GetDlgItem(IDC_EDIT_N_VALUE)->EnableWindow(FALSE);
}
void CParaCtrl::SelDisplay(BOOL bDisplay)
{
if(bDisplay){
GetDlgItem(IDC_STATIC_A)->EnableWindow(TRUE);
GetDlgItem(IDC_STATIC_RP)->EnableWindow(TRUE);
GetDlgItem(IDC_STATIC_RV)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_SEL_A)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_SEL_RP)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_SEL_RV)->EnableWindow(TRUE);
}
else{
GetDlgItem(IDC_STATIC_A)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_RP)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_RV)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_SEL_A)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_SEL_RP)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_SEL_RV)->EnableWindow(FALSE);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -