📄 userdeffilterdlg.cpp
字号:
// UserDefFilterDlg.cpp : implementation file
//
#include "stdafx.h"
#include "RSIP.h"
#include "UserDefFilterDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CUserDefFilterDlg dialog
CUserDefFilterDlg::CUserDefFilterDlg(CWnd* pParent /*=NULL*/)
: CDialog(CUserDefFilterDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CUserDefFilterDlg)
m_nBias = 0;
m_nFactor = 1;
m_bRevert = FALSE;
m_nSymmetry = 0;
//}}AFX_DATA_INIT
}
void CUserDefFilterDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CUserDefFilterDlg)
DDX_Text(pDX, IDC_BIAS, m_nBias);
DDX_Text(pDX, IDC_FACTOR, m_nFactor);
DDX_Check(pDX, IDC_REVERT, m_bRevert);
DDX_Radio(pDX, IDC_NONE_RADIO, m_nSymmetry);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CUserDefFilterDlg, CDialog)
//{{AFX_MSG_MAP(CUserDefFilterDlg)
ON_EN_CHANGE(IDC_UNIT1, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT2, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT3, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT4, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT5, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT6, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT7, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT8, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT9, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT10, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT11, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT12, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT13, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT14, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT15, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT16, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT17, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT18, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT19, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT20, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT21, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT22, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT23, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT24, OnChangeUnitValue)
ON_EN_CHANGE(IDC_UNIT25, OnChangeUnitValue)
ON_BN_CLICKED(IDC_TEMPLATE, OnTemplate)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CUserDefFilterDlg message handlers
BOOL CUserDefFilterDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CheckRadioButton(IDC_NONE_RADIO,IDC_BOTH_RADIO,IDC_BOTH_RADIO);
m_bIsChged = TRUE;
for(int i=0; i<25; i++)
{
SetDlgItemInt(IDC_UNIT1+i,0);
}
SetDlgItemInt(IDC_UNIT13,1);
m_bIsChged = FALSE;
return TRUE;
}
void CUserDefFilterDlg::OnOK()
{
for(int i=0; i<25; i++)
m_nUnitValue[i] = GetDlgItemInt(IDC_UNIT1+i);
m_nFactor = GetDlgItemInt(IDC_FACTOR);
if(m_nFactor==0)
{
MessageBox("因子的值不可为零!");
return;
}
CDialog::OnOK();
}
void CUserDefFilterDlg::OnChangeUnitValue()
{
UpdateData();
//int nSymType = GetCheckedRadioButton(IDC_RADIO4,IDC_RADIO7)-IDC_RADIO4;
if(m_nSymmetry<=0)
return;
if(m_bIsChged)
return;
m_bIsChged = TRUE;
int ThisCol;
int ThisRow;
int ID = ::GetDlgCtrlID(::GetFocus());
ThisCol = (ID-IDC_UNIT1)%5;
ThisRow = (ID-IDC_UNIT1)/5;
if(m_nSymmetry == 1)//Hor
{
int Number = GetDlgItemInt(ID);
int ChgCol = -(ThisCol-2)+2;
if(ChgCol != ThisCol)
SetDlgItemInt(ThisRow*5+ChgCol+IDC_UNIT1,Number);
}
else if(m_nSymmetry == 2)//Vert
{
int Number = GetDlgItemInt(ID);
int ChgRow = -(ThisRow-2)+2;
if(ChgRow != ThisRow)
SetDlgItemInt(ChgRow*5+ThisCol+IDC_UNIT1,Number);
}
else if(m_nSymmetry == 3)//4 Dir
{
int Number = GetDlgItemInt(ID);
int ChgRow = -(ThisRow-2)+2;
if(ChgRow!=ThisRow)
SetDlgItemInt(ChgRow*5+ThisCol+IDC_UNIT1,Number);
int ChgCol = -(ThisCol-2)+2;
if(ChgCol!=ThisCol)
SetDlgItemInt(ThisRow*5+ChgCol+IDC_UNIT1,Number);
if(ChgCol!=ThisCol&&ChgRow!=ThisRow)
SetDlgItemInt(ChgRow*5+ChgCol+IDC_UNIT1,Number);
}
m_bIsChged = FALSE;
}
void CUserDefFilterDlg::OnTemplate()
{
CSelTemplateDlg SelTempDlg(this);
if(SelTempDlg.DoModal() == IDOK)
{
for(int i=0; i<25; i++)
m_nUnitValue[i] = 0;
m_nBias = 0;
m_nFactor = 1;
switch(SelTempDlg.m_nSelectedTemp+1)
{
case 1:
for(i=0; i<25; i++)
m_nUnitValue[i] = -1;
m_nUnitValue[12] = 24;
break;
case 2:
for(i=0; i<25; i++)
m_nUnitValue[i] = 1;
m_nBias = 0;
m_nFactor = 25;
break;
case 3:
for(i=0; i<5; i++)
{
m_nUnitValue[i] = -1;
m_nUnitValue[10+i] = 2;
m_nUnitValue[20+i] = -1;
}
break;
case 4:
m_nUnitValue[1]=-1;
m_nUnitValue[2]=-1;
m_nUnitValue[5]=-1;
m_nUnitValue[6]=-1;
m_nUnitValue[10]=-1;
m_nUnitValue[14]=-1;
m_nUnitValue[18]=-1;
m_nUnitValue[19]=-1;
m_nUnitValue[22]=-1;
m_nUnitValue[23]=-1;
m_nUnitValue[4] = 2;
m_nUnitValue[8] = 2;
m_nUnitValue[12] = 2;
m_nUnitValue[16] = 2;
m_nUnitValue[20] = 2;
break;
case 5:
for(i=0; i<5; i++)
{
m_nUnitValue[i*5] = -1;
m_nUnitValue[i*5+2] = 2;
m_nUnitValue[i*5+4] = -1;
}
break;
case 6:
for(i=0; i<5; i++)
m_nUnitValue[i*6] = 2;
m_nUnitValue[2] = -1;
m_nUnitValue[3] = -1;
m_nUnitValue[8] = -1;
m_nUnitValue[9] = -1;
m_nUnitValue[10] = -1;
m_nUnitValue[14] = -1;
m_nUnitValue[15] = -1;
m_nUnitValue[16] = -1;
m_nUnitValue[21] = -1;
m_nUnitValue[22] = -1;
break;
case 7:
m_nUnitValue[7] = -1;
m_nUnitValue[11] = -1;
m_nUnitValue[12] = 4;
m_nUnitValue[13] = -1;
m_nUnitValue[17] = -1;
break;
case 8:
m_nUnitValue[6] = -1;
m_nUnitValue[7] = -1;
m_nUnitValue[8] = -1;
m_nUnitValue[11] = -1;
m_nUnitValue[12] = 8;
m_nUnitValue[13] = -1;
m_nUnitValue[16] = -1;
m_nUnitValue[17] = -1;
m_nUnitValue[18] = -1;
break;
case 9:
m_nUnitValue[6] = 1;
m_nUnitValue[7] = 1;
m_nUnitValue[8] = 1;
m_nUnitValue[11] = 1;
m_nUnitValue[12] = -2;
m_nUnitValue[13] = 1;
m_nUnitValue[16] = -1;
m_nUnitValue[17] = -1;
m_nUnitValue[18] = -1;
break;
case 10:
m_nUnitValue[6] = 1;
m_nUnitValue[7] = 1;
m_nUnitValue[8] = 1;
m_nUnitValue[11] = -1;
m_nUnitValue[12] = -2;
m_nUnitValue[13] = 1;
m_nUnitValue[16] = -1;
m_nUnitValue[17] = -1;
m_nUnitValue[18] = 1;
break;
case 11:
m_nUnitValue[6] = -1;
m_nUnitValue[7] = 1;
m_nUnitValue[8] = 1;
m_nUnitValue[11] = -1;
m_nUnitValue[12] = -2;
m_nUnitValue[13] = 1;
m_nUnitValue[16] = -1;
m_nUnitValue[17] = 1;
m_nUnitValue[18] = 1;
break;
case 12:
m_nUnitValue[6] = -1;
m_nUnitValue[7] = -1;
m_nUnitValue[8] = 1;
m_nUnitValue[11] = -1;
m_nUnitValue[12] = -2;
m_nUnitValue[13] = 1;
m_nUnitValue[16] = 1;
m_nUnitValue[17] = 1;
m_nUnitValue[18] = 1;
break;
case 13:
m_nUnitValue[6] = -1;
m_nUnitValue[7] = -1;
m_nUnitValue[8] = -1;
m_nUnitValue[11] = 1;
m_nUnitValue[12] = -2;
m_nUnitValue[13] = 1;
m_nUnitValue[16] = 1;
m_nUnitValue[17] = 1;
m_nUnitValue[18] = 1;
break;
case 14:
m_nUnitValue[6] = 1;
m_nUnitValue[7] = -1;
m_nUnitValue[8] = -1;
m_nUnitValue[11] = 1;
m_nUnitValue[12] = -2;
m_nUnitValue[13] = -1;
m_nUnitValue[16] = 1;
m_nUnitValue[17] = 1;
m_nUnitValue[18] = 1;
break;
case 15:
m_nUnitValue[6] = 1;
m_nUnitValue[7] = 1;
m_nUnitValue[8] = -1;
m_nUnitValue[11] = 1;
m_nUnitValue[12] = -2;
m_nUnitValue[13] = -1;
m_nUnitValue[16] = 1;
m_nUnitValue[17] = 1;
m_nUnitValue[18] = -1;
break;
case 16:
m_nUnitValue[6] = 1;
m_nUnitValue[7] = 1;
m_nUnitValue[8] = 1;
m_nUnitValue[11] = 1;
m_nUnitValue[12] = -2;
m_nUnitValue[13] = -1;
m_nUnitValue[16] = 1;
m_nUnitValue[17] = -1;
m_nUnitValue[18] = -1;
break;
}
m_bIsChged = TRUE;
for(i=0; i<25; i++)
SetDlgItemInt(i+IDC_UNIT1,m_nUnitValue[i]);
m_bIsChged = FALSE;
SetDlgItemInt(IDC_FACTOR,m_nFactor);
SetDlgItemInt(IDC_BIAS,m_nBias);
}
}
/////////////////////////////////////////////////////////////////////////////
// CSelTemplateDlg dialog
CSelTemplateDlg::CSelTemplateDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSelTemplateDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSelTemplateDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CSelTemplateDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSelTemplateDlg)
DDX_Control(pDX, IDC_TEMPLATE_LIST, m_TemplateList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSelTemplateDlg, CDialog)
//{{AFX_MSG_MAP(CSelTemplateDlg)
ON_LBN_DBLCLK(IDC_TEMPLATE_LIST, OnDblclkTemplateList)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSelTemplateDlg message handlers
BOOL CSelTemplateDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CString szTempName;
for(int i=IDS_STRING1; i<=IDS_STRING16; i++)
{
szTempName.LoadString(i);
m_TemplateList.AddString(szTempName);
}
m_TemplateList.SetCurSel(0);
return TRUE;
}
void CSelTemplateDlg::OnDblclkTemplateList()
{
OnOK();
}
void CSelTemplateDlg::OnOK()
{
m_nSelectedTemp = m_TemplateList.GetCurSel();
if(m_nSelectedTemp < 0)
return;
CDialog::OnOK();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -