📄 generalpage.cpp
字号:
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 + -