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

📄 mainfrm.cpp

📁 雷达资料的处理和应用
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -