📄 testpagedlg.cpp
字号:
// TestPageDlg.cpp : implementation file
//
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include "ANNApp.h"
#include "TestPageDlg.h"
#include "ANNAppPropSheet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
static const COLORREF WinnerTextColor = RGB(255, 0, 0);
static const COLORREF DefaultTextColor = GetSysColor( COLOR_BTNTEXT );
/////////////////////////////////////////////////////////////////////////////
// CTestPageDlg property page
IMPLEMENT_DYNCREATE(CTestPageDlg, CPropertyPage)
CTestPageDlg::CTestPageDlg() : CPropertyPage(CTestPageDlg::IDD)
{
//{{AFX_DATA_INIT(CTestPageDlg)
m_strInput0 = _T("");
m_strInput1 = _T("");
m_strOut0 = _T("");
m_strOut1 = _T("");
m_strOut2 = _T("");
m_strNNInfo = _T("");
m_staticCL0 = _T("");
m_staticCL03 = _T("");
m_staticCL06 = _T("");
m_staticCL09 = _T("");
m_staticWP0 = _T("");
m_staticWP03 = _T("");
m_staticWP06 = _T("");
m_staticWP09 = _T("");
//}}AFX_DATA_INIT
}
CTestPageDlg::~CTestPageDlg()
{
}
void CTestPageDlg::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTestPageDlg)
DDX_Control(pDX, IDC_STATIC_OUT2, m_staticOut2);
DDX_Control(pDX, IDC_STATIC_OUT1, m_staticOut1);
DDX_Control(pDX, IDC_STATIC_OUT0, m_staticOut0);
DDX_Control(pDX, IDC_SLIDER_WEAPON, m_sliderInput1);
DDX_Control(pDX, IDC_SLIDER_CLOTHING, m_sliderInput0);
DDX_Text(pDX, IDC_EDIT_INPUT0, m_strInput0);
DDX_Text(pDX, IDC_EDIT_INPUT1, m_strInput1);
DDX_Text(pDX, IDC_EDIT_OUT0, m_strOut0);
DDX_Text(pDX, IDC_EDIT_OUT1, m_strOut1);
DDX_Text(pDX, IDC_EDIT_OUT2, m_strOut2);
DDX_Text(pDX, IDC_STATIC_NNINFO, m_strNNInfo);
DDX_Text(pDX, IDC_STATIC_CL0, m_staticCL0);
DDX_Text(pDX, IDC_STATIC_CL03, m_staticCL03);
DDX_Text(pDX, IDC_STATIC_CL06, m_staticCL06);
DDX_Text(pDX, IDC_STATIC_CL09, m_staticCL09);
DDX_Text(pDX, IDC_STATIC_WP0, m_staticWP0);
DDX_Text(pDX, IDC_STATIC_WP03, m_staticWP03);
DDX_Text(pDX, IDC_STATIC_WP06, m_staticWP06);
DDX_Text(pDX, IDC_STATIC_WP09, m_staticWP09);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTestPageDlg, CPropertyPage)
//{{AFX_MSG_MAP(CTestPageDlg)
ON_BN_CLICKED(IDC_BUTTON_RUN, OnButtonRun)
ON_WM_HSCROLL()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTestPageDlg message handlers
BOOL CTestPageDlg::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// init sliders
m_sliderInput0.SetRange(0, 10);
m_sliderInput1.SetRange(0, 10);
m_sliderInput0.SetPos(3);
m_sliderInput1.SetPos(6);
double pct0 = (double)m_sliderInput0.GetPos() / m_sliderInput0.GetRangeMax();
m_strInput0.Format("%2.2f", pct0);
double pct1 = (double)m_sliderInput1.GetPos() / m_sliderInput1.GetRangeMax();
m_strInput1.Format("%2.2f", pct1);
m_staticCL0 = gClothingStr[0];
m_staticCL03 = gClothingStr[3];
m_staticCL06 = gClothingStr[6];
m_staticCL09 = gClothingStr[9];
m_staticWP0 = gWeaponStr[0];
m_staticWP03 = gWeaponStr[3];
m_staticWP06 = gWeaponStr[6];
m_staticWP09 = gWeaponStr[9];
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CTestPageDlg::enableControls(BOOL enable)
{
GetDlgItem(IDC_SLIDER_CLOTHING)->EnableWindow(enable);
GetDlgItem(IDC_SLIDER_WEAPON)->EnableWindow(enable);
GetDlgItem(IDC_BUTTON_RUN)->EnableWindow(enable);
}
BOOL CTestPageDlg::OnSetActive()
{
CANNAppPropSheet* pSheet = (CANNAppPropSheet*)GetParent();
_nnFilename = pSheet->getNNFilename();
BOOL enable = (_nnFilename.GetLength() != 0);
// load neural network
if (enable)
{
ifstream ist(_nnFilename);
if (_bpnet.load(ist) == false)
{
MessageBox("Error loading neural network", "Error", MB_ICONERROR);
enable = false;
}
else
m_strNNInfo.Format("Network Loaded: %d Inputs, %d Hidden units, %d Outputs", _bpnet.getNumNodes(0), _bpnet.getNumNodes(1), _bpnet.getNumNodes(2));
}
else
m_strNNInfo = "No Network Loaded";
enableControls( enable );
UpdateData(FALSE);
return CPropertyPage::OnSetActive();
}
void CTestPageDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
CSliderCtrl* pSlider = (CSliderCtrl*)pScrollBar;
double pct = (double)pSlider->GetPos() / pSlider->GetRangeMax();
int sliderId = pScrollBar->GetDlgCtrlID();
if ( sliderId == IDC_SLIDER_CLOTHING )
{
m_strInput0.Format("%2.2f", pct);
}
else
if ( sliderId == IDC_SLIDER_WEAPON )
{
m_strInput1.Format("%2.2f", pct);
}
UpdateData(FALSE);
CPropertyPage::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CTestPageDlg::OnButtonRun()
{
UpdateData();
double input0 = (double)m_sliderInput0.GetPos() / m_sliderInput0.GetRangeMax();
double input1 = (double)m_sliderInput1.GetPos() / m_sliderInput1.GetRangeMax();
// set input values
_bpnet.setInput(input0, 0);
_bpnet.setInput(input1, 1);
// forward-pass
_bpnet.run();
// get output values
double out0 = _bpnet.getOutput(0);
double out1 = _bpnet.getOutput(1);
double out2 = _bpnet.getOutput(2);
m_strOut0.Format("%2.2f", out0);
m_strOut1.Format("%2.2f", out1);
m_strOut2.Format("%2.2f", out2);
double maxOut = max(out0, max(out1, out2));
if (out0 == maxOut)
m_staticOut0.SetTextColor(WinnerTextColor);
else
m_staticOut0.SetTextColor(DefaultTextColor);
if (out1 == maxOut)
m_staticOut1.SetTextColor(WinnerTextColor);
else
m_staticOut1.SetTextColor(DefaultTextColor);
if (out2 == maxOut)
m_staticOut2.SetTextColor(WinnerTextColor);
else
m_staticOut2.SetTextColor(DefaultTextColor);
UpdateData(FALSE);
InvalidateRect(NULL, FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -