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

📄 generalpage.cpp

📁 基于小波的SAR斑点处理
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			m_nDay<=0 || m_nDay>31)
		{
			MessageBox("成象日期输入值错误!");
			return FALSE;
		}

		m_dwDate = m_nYear*10000+m_nMonth*100+m_nDay;
	}
	
	m_MinWaveLength = m_cMinWaveLength.GetCurSel();
	m_MaxWaveLength = m_cMaxWaveLength.GetCurSel();
	
	return CPropertyPage::OnKillActive();
}

/////////////////////////////////////////////////////////////////////////////
// CLocationPage property page

IMPLEMENT_DYNCREATE(CLocationPage, CPropertyPage)

CLocationPage::CLocationPage() : CPropertyPage(CLocationPage::IDD)
{
	//{{AFX_DATA_INIT(CLocationPage)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	for(int i=0; i<8; i++)
	{
		m_pGeoPosi[i] = 10000;		// impossible value
	}
}

CLocationPage::~CLocationPage()
{
}

void CLocationPage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLocationPage)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLocationPage, CPropertyPage)
	//{{AFX_MSG_MAP(CLocationPage)
	ON_BN_CLICKED(IDC_CHECK9, OnCheckHasLocation)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLocationPage message handlers

BOOL CLocationPage::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	
	for(int i=0; i<8; i++)
	{
		if(m_pGeoPosi[i]>=10000)
			break;
	}
	if(i<8)
	{
		CheckDlgButton(IDC_CHECK9,0);
		for(int j=0; j<8; j++)
		{
			GetDlgItem(IDC_EDIT1+j)->EnableWindow(FALSE);
			GetDlgItem(IDC_CHECK1+j)->EnableWindow(FALSE);
		}
	}
	else
	{
		CheckDlgButton(IDC_CHECK9,1);
		CString szText;
		for(int j=0;j<8;j++)
		{
			szText.Format("%.5f",fabs(m_pGeoPosi[j]));
			SetDlgItemText(IDC_EDIT1+j,szText);
			if(m_pGeoPosi[j]>0)
				CheckDlgButton(IDC_CHECK1+j,1);
			else
				CheckDlgButton(IDC_CHECK1+j,0);
		}
	}
		
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CLocationPage::OnCheckHasLocation() 
{
	if(!IsDlgButtonChecked(IDC_CHECK9))
	{
		for(int i=0; i<8; i++)
		{
			GetDlgItem(IDC_EDIT1+i)->EnableWindow(FALSE);
			GetDlgItem(IDC_CHECK1+i)->EnableWindow(FALSE);
		}
	}
	else
	{
		for(int i=0; i<8; i++)
		{
			GetDlgItem(IDC_EDIT1+i)->EnableWindow(TRUE);
			GetDlgItem(IDC_CHECK1+i)->EnableWindow(TRUE);
		}
	}
}

BOOL CLocationPage::GetValue()
{
	if(!IsDlgButtonChecked(IDC_CHECK9))
	{
		for(int i=0; i<8; i++)
		{
			m_pGeoPosi[i] = 10000;	// impossible value
		}
	}
	else
	{
		char szText[32];
		for(int i=0; i<8; i=i+2)
		{
			GetDlgItemText(IDC_EDIT1+i,szText,32);	// longitude
			m_pGeoPosi[i] = atof(szText);
			if(m_pGeoPosi[i]<0 || m_pGeoPosi[i]>180)
			{
				MessageBox("输入值错误!","错误",MB_OK|MB_ICONINFORMATION);
				return FALSE;
			}
			if(!IsDlgButtonChecked(IDC_CHECK1+i))
				m_pGeoPosi[i] = -m_pGeoPosi[i];

			GetDlgItemText(IDC_EDIT1+i+1,szText,32);	// latitude
			m_pGeoPosi[i+1] = atof(szText);
			if(m_pGeoPosi[i+1]<0 || m_pGeoPosi[i+1]>90)
			{
				MessageBox("输入值错误!","错误",MB_OK|MB_ICONINFORMATION);
				return FALSE;
			}
			if(!IsDlgButtonChecked(IDC_CHECK1+i+1))
				m_pGeoPosi[i+1] = -m_pGeoPosi[i+1];
		}
	}
	return TRUE;
}

BOOL CLocationPage::OnKillActive() 
{
	if(!GetValue())
		return FALSE;
	
	return CPropertyPage::OnKillActive();
}

void CLocationPage::OnOK() 
{
	// TODO: Add your specialized code here and/or call the base class
	
	CPropertyPage::OnOK();
}

/////////////////////////////////////////////////////////////////////////////
// CLinkedImageInfoPage property page

IMPLEMENT_DYNCREATE(CLinkedImageInfoPage, CPropertyPage)

CLinkedImageInfoPage::CLinkedImageInfoPage() : CPropertyPage(CLinkedImageInfoPage::IDD)
{
	//{{AFX_DATA_INIT(CLinkedImageInfoPage)
	m_nImgHeight = 0;
	m_nImgWidth = 0;
	//}}AFX_DATA_INIT
	m_nImageCount = 0;
	m_nCurSelIndex = 0;
}

CLinkedImageInfoPage::~CLinkedImageInfoPage()
{
	CString *pszTemp;
	for(int i=0; i<m_aLinkedImageArray.GetSize(); i++)
	{
		pszTemp = (CString *)m_aLinkedImageArray.GetAt(i);
		delete pszTemp;
	}
	m_aLinkedImageArray.RemoveAll();
}

void CLinkedImageInfoPage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLinkedImageInfoPage)
	DDX_Control(pDX, IDC_LINKEDIMAGELIST, m_LinkedImageList);
	DDX_Text(pDX, IDC_IMGHEIGHT, m_nImgHeight);
	DDX_Text(pDX, IDC_IMGWIDTH, m_nImgWidth);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLinkedImageInfoPage, CPropertyPage)
	//{{AFX_MSG_MAP(CLinkedImageInfoPage)
	ON_BN_CLICKED(IDC_ADDIMAGE, OnAddimage)
	ON_BN_CLICKED(IDC_REMOVEIMAGE, OnRemoveimage)
	ON_LBN_SELCHANGE(IDC_LINKEDIMAGELIST, OnSelchangeLinkedimagelist)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLinkedImageInfoPage message handlers

BOOL CLinkedImageInfoPage::OnInitDialog()
{
	CPropertyPage::OnInitDialog();
	
	CString * pszTemp = NULL;
	for(int i=0; i<m_aLinkedImageArray.GetSize(); i++)
	{
		pszTemp = (CString *)m_aLinkedImageArray.GetAt(i);
		ASSERT(pszTemp != NULL);
		m_LinkedImageList.AddString(*pszTemp);
	}
	
	m_LinkedImageList.SetCurSel(m_nCurSelIndex);

	return TRUE;
}

void CLinkedImageInfoPage::OnSelchangeLinkedimagelist() 
{
	m_nCurSelIndex = m_LinkedImageList.GetCurSel();	
}

void CLinkedImageInfoPage::OnAddimage() 
{
	CFileDialog fileDlg(TRUE,"*.DAT",
		NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, 
		"Image Files(*.dat)|*.dat||",this);
	char lpstrFile[32764];
	lpstrFile[0]='\0';
	fileDlg.m_ofn.lpstrFile=lpstrFile;
	fileDlg.m_ofn.nMaxFile=32764;
	if ( fileDlg.DoModal() == IDOK )
	{
		POSITION pos = fileDlg.GetStartPosition();
		while ( pos != NULL )
		{
			CString * lpstrPathName = new CString();
			*lpstrPathName = fileDlg.GetNextPathName( pos );
			
			CFile File;
			if(0 == File.Open(*lpstrPathName,CFile::modeRead))
			{
				MessageBox("打不开数据文件!",
					"错误",
					MB_OK|MB_ICONINFORMATION);
				delete lpstrPathName;
				return;
			}

			if(File.GetLength() != m_nImgWidth*m_nImgHeight)
			{
				MessageBox("文件大小不匹配!",
					"错误",
					MB_OK|MB_ICONINFORMATION);
				File.Close();
				delete lpstrPathName;
				return;
			}
			File.Close();
			
			m_LinkedImageList.AddString(*lpstrPathName);
			m_LinkedImageList.SetCurSel(m_nImageCount);

			m_aLinkedImageArray.Add(lpstrPathName);
			
			m_nImageCount++;
		}
	}
}

void CLinkedImageInfoPage::OnRemoveimage() 
{
	ASSERT(m_nCurSelIndex>=0 && 
		m_nCurSelIndex<m_LinkedImageList.GetCount());

	m_LinkedImageList.DeleteString(m_nCurSelIndex);
	
	CString * pszTemp = (CString *)m_aLinkedImageArray.GetAt(m_nCurSelIndex);
	delete pszTemp;
	m_aLinkedImageArray.RemoveAt(m_nCurSelIndex);
	m_nImageCount--;
}

BOOL CLinkedImageInfoPage::OnKillActive() 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CPropertyPage::OnKillActive();
}

/////////////////////////////////////////////////////////////////////////////
// CImgInfoSheet

IMPLEMENT_DYNAMIC(CImgInfoSheet, CPropertySheet)

CImgInfoSheet::CImgInfoSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
	:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{
	AddPage(&m_GeneralInfo);
	AddPage(&m_LocationInfo);
	AddPage(&m_LinkedImgPage);
}

CImgInfoSheet::CImgInfoSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
	:CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{
	AddPage(&m_GeneralInfo);
	AddPage(&m_LocationInfo);
	AddPage(&m_LinkedImgPage);
}

CImgInfoSheet::~CImgInfoSheet()
{
}

BEGIN_MESSAGE_MAP(CImgInfoSheet, CPropertySheet)
	//{{AFX_MSG_MAP(CImgInfoSheet)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CImgInfoSheet message handlers

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -