www.gusucode.com > VC++牛顿法解方程之混沌情况图形示例源代码源码程序 > VC++牛顿法解方程之混沌情况图形示例源代码源码程序\code\ParaCtrl.cpp
//Download by http://www.NewXing.com // 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); } }