📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "FuShe.h"
#include "FuSheView.h"
#include "NumberCtrl.h"
#include "ZiliaoTypeDlg.h"
#include "MainFrm.h"
#include "memory.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
static mTempItems ItemInfo[]={
{IDI_ICON1,"资料解压"},
{IDI_ICON2,"退模糊处理"},
{IDI_ICON3,"风场反演"},
{IDI_ICON4,"衰减订正"},
{IDI_ICON5,"图象显示"},
{IDI_ICON6,"保存图象"},
{IDI_ICON7,"显示退模糊结果"}
};
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_COMMAND_EX(CG_ID_VIEW_MYDIALOGBAR, OnBarCheck)
ON_UPDATE_COMMAND_UI(CG_ID_VIEW_MYDIALOGBAR, OnUpdateControlBarMenu)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_TIMER()
ON_COMMAND(ID_BUTTON_FANG, OnButtonFang)
ON_UPDATE_COMMAND_UI(ID_BUTTON_FANG, OnUpdateButtonFang)
//}}AFX_MSG_MAP
ON_LBN_SELCHANGE(IDC_LIST1,OnSelChange)
END_MESSAGE_MAP()
/*static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPTION,
ID_INDICATOR_PROCESSION,
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};*/
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
mFileName=new CString[100];
m_nRange=0;
m_lpMsg="欢迎使用南京大学雷达处理系列软件";
///////////////////////解模糊时出现的对话框/////////////////////////////////////////
CString lpFilter = "radar data(*.*v)|*.*v";
m_FileDialog = new CFileDialog(TRUE,0,0,OFN_HIDEREADONLY|
OFN_ALLOWMULTISELECT,(LPCTSTR)lpFilter,this);
//////////////////////对解模糊结果认证时打开的文件//////////////////////////////////
lpFilter = "Radar data(*.*d)|*.*d";
m_DisFileDlg = new CFileDialog(TRUE,0,0,OFN_HIDEREADONLY,
(LPCTSTR)lpFilter,this);
m_bFang=FALSE;
}
CMainFrame::~CMainFrame()
{
delete []mFileName;
delete m_FileDialog;
delete m_DisFileDlg;
}
void CMainFrame::OnSelChange()
{
int index=m_wndTempBar.GetCurSel();
CRect rect;
HBITMAP hbmp;
CFuSheView *pView;
CFileDialog *pFileDlg;
///////////////资料解压时的出现的文件选择对话框/////////////////////////////////////
CString lpFilter = "radar data(*.dat)|*.dat";
pFileDlg = new CFileDialog(TRUE,0,0,OFN_HIDEREADONLY,
(LPCTSTR)lpFilter,0);
CNumberCtrl m_pNumber;
int i;
CString strName;
CFile sFile;
//////////退模糊 ////////////////////////////////////
static int iCount;
POSITION lpStartPos;
char lpcFilePointer[1024]=" ";
/////保存图象///////////////////////////////
CFileDialog *dlg;
CString bmpname;
lpFilter = "radar 速度图象(*.bmp)|*.bmp";
dlg=new CFileDialog(FALSE,0,0,OFN_OVERWRITEPROMPT,(LPCTSTR)lpFilter,0);
////////////////////图象显示//////////////////////////////////////////////////////
CZiliaoTypeDlg typeDlg;
CFileDialog *dlg11;
lpFilter="radar 强度资料(*.*I)|*.*I";
dlg11=new CFileDialog(TRUE,0,0,OFN_HIDEREADONLY,
(LPCTSTR)lpFilter,0);
switch(index)
{
/////////////////对资料进行解压/////////////////////////////////////////////////
case 0:
if(pFileDlg->DoModal()==IDCANCEL)
{
delete pFileDlg;
delete dlg;
delete dlg11;
return;
}
strName=pFileDlg->GetPathName();
sFile.Open(strName,CFile::modeRead);
short int nRange;
if (m_pNumber.DoModal()==IDOK)
nRange=m_pNumber.m_nNumber;
else
{
delete pFileDlg;
delete dlg;
delete dlg11;
sFile.Close();
return;
}
if (::IsWindow(m_pRead.m_hWnd))
m_pRead.SetFocus();
else
{
m_pRead.Create(IDD_UNPRESSBOX,NULL); ///产生一无模态模块,数据进度条
m_pRead.CenterWindow(NULL);
m_pRead.ShowWindow(SW_SHOW);
}
m_pRead.m_Unpress.SetRange(1,nRange-2);
for (i=0; i<nRange; i++) ///根据不同的层数进行解压
{
m_pRead.UnpressData(&sFile);
m_pRead.m_Unpress.SetPos(i);
}
m_pRead.m_Unpress.SetPos(0);
///////////////////////////////////////////////////////////////////////////////////////////
if (m_pRead.GetSafeHwnd() != NULL)
m_pRead.DestroyWindow();
sFile.Close();
break;
/////////退模糊处理////////////////////////////////////////////////////////////////
case 1:
// lpcFilePointer=new char[1024];
// memset(lpcFilePointer,' ',sizeof(lpcFilePointer));
m_FileDialog->m_ofn.lpstrFile = lpcFilePointer;
m_FileDialog->m_ofn.nMaxFile =1024;
m_FileDialog->m_ofn.lpstrFileTitle =NULL;
if(m_FileDialog->DoModal()==IDCANCEL)
{
delete pFileDlg;
delete dlg;
delete dlg11;
return;
}
iCount = 0;
lpStartPos = m_FileDialog->GetStartPosition();
mFileName[iCount] = m_FileDialog->GetPathName();
while(lpStartPos)
{
mFileName[iCount] = m_FileDialog->GetNextPathName(lpStartPos);
iCount ++;
}
m_nRange = iCount;
m_statusBar.SetText("正在进行退模糊",0,0);
SetTimer(2,250,NULL);
// delete []lpcFilePointer;
break;
//////////////风场反演////////////////////////////////////////////////////////////////////
case 2:
// AfxMessageBox("2");
break;
////////////////衰减订正///////////////////////////////////////////////////////////////
case 3:
AfxMessageBox("对强度资料的衰减订正部分还没加进来");
break;
///////////////速度图象显示////////////////////////////////////////////////////////////
case 4:
pView=(CFuSheView *)m_pViewActive;
if(typeDlg.DoModal()==IDCANCEL)
{
delete pFileDlg;
delete dlg;
delete dlg11;
return;
}
if(typeDlg.m_nType==1)
{
if(dlg11->DoModal()==IDCANCEL)
{
delete pFileDlg;
delete dlg;
delete dlg11;
return;
}
m_pQDFileName=dlg11->GetPathName();
flag=1; ///强度场资料
pView->bStar=FALSE;
pView->RedrawWindow();
}
else if(typeDlg.m_nType==2)
{
if(m_FileDialog->DoModal()==IDCANCEL)
{
delete pFileDlg;
delete dlg;
delete dlg11;
return;
}
m_pQDFileName=m_FileDialog->GetPathName();
flag=2; ///速度场资料
pView->bStar=FALSE;
pView->RedrawWindow();
}
break;
//////////////保存图象资料/////////////////////////////////////////////////////////////
case 5:
pView=(CFuSheView *)m_pViewActive;
pView->GetWindowRect(&rect);
// rect1=pView->rect;
hbmp=Copybitmap(&rect);
if(dlg->DoModal()==FALSE)
{
delete pFileDlg;
delete dlg;
delete dlg11;
return;
}
bmpname=dlg->GetPathName();
Tofile(hbmp,bmpname);
AfxMessageBox("图象保存完毕",MB_OK);
break;
///////////////查看退模糊处理结果///////////////////////////////////////////////////////
case 6:
pView=(CFuSheView *)m_pViewActive;
if (m_DisFileDlg->DoModal() == IDCANCEL)
{
delete pFileDlg;
delete dlg;
delete dlg11;
return;
}
m_pFileName=m_DisFileDlg->GetPathName();
flag=3;
// strName=m_DisFileDlg->GetPathName();
// pView->GetWindowRect(&rect);
// create a device DC
// pDC =pView->GetDC();
// UpdateWindow();
pView->bStar=FALSE;
pView->RedrawWindow();
// pDC->PatBlt(0,0,rect.right,rect.bottom,WHITENESS);
// m_Pic.GetDealiasedData(&file,(CDC*)pDC);
break;
default:
break;
}
delete pFileDlg;
delete dlg;
delete dlg11;
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -