www.pudn.com > MyMFCVega.rar > MainFrm.cpp


// MainFrm.cpp : implementation of the CMainFrame class 
// 
 
#include "stdafx.h" 
#include "MyMFCVega.h" 
 
#include "MainFrm.h" 
#include "vg.h" 
#include "SetEnvDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CMainFrame 
 
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) 
 
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) 
	//{{AFX_MSG_MAP(CMainFrame) 
	ON_WM_CREATE() 
	ON_COMMAND(ID_VIEW_FULLSCREEN, OnViewFullscreen) 
	ON_UPDATE_COMMAND_UI(ID_VIEW_FULLSCREEN, OnUpdateViewFullscreen) 
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_XYZ,OnUpdateXYZ)      //手动添加 
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_HPR,OnUpdateHPR) 
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_FORXYZ,OnUpdateForXYZ) 
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_FORHPR,OnUpdateForHPR) 
//	ON_COMMAND(ID_GFX_ENV, OnGfxEnv) 
	//}}AFX_MSG_MAP 
 
END_MESSAGE_MAP() 
 
static UINT indicators[] = 
{ 
	ID_SEPARATOR,           // status line indicator 
	ID_INDICATOR_XYZ, 
	ID_INDICATOR_FORXYZ, 
	ID_INDICATOR_HPR, 
	ID_INDICATOR_FORHPR, 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
// CMainFrame construction/destruction 
 
CMainFrame::CMainFrame() 
{ 
	// TODO: add member initialization code here 
	m_bFullScreen=FALSE; 
	 
} 
 
CMainFrame::~CMainFrame() 
{ 
} 
 
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) || 
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) 
	{ 
		TRACE0("Failed to create toolbar\n"); 
		return -1;      // fail to create 
	} 
 
	if (!m_wndStatusBar.Create(this) || 
		!m_wndStatusBar.SetIndicators(indicators, 
		  sizeof(indicators)/sizeof(UINT))) 
	{ 
		TRACE0("Failed to create status bar\n"); 
		return -1;      // fail to create 
	} 
 
	// TODO: Delete these three lines if you don't want the toolbar to 
	//  be dockable 
	m_wndStatusBar.SetPaneStyle(1,SBPS_NOBORDERS); 
	m_wndStatusBar.SetPaneStyle(3,SBPS_NOBORDERS); 
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); 
	EnableDocking(CBRS_ALIGN_ANY); 
	DockControlBar(&m_wndToolBar); 
 
	return 0; 
} 
 
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 
{ 
	if( !CFrameWnd::PreCreateWindow(cs) ) 
		return FALSE; 
	// TODO: Modify the Window class or styles here by modifying 
	//  the CREATESTRUCT cs 
 
	return TRUE; 
} 
 
void CMainFrame::OnUpdateXYZ(CCmdUI* pCmdUI) 
{ 
	pCmdUI->Enable(TRUE); //开启或关闭菜单项 
} 
 
void CMainFrame::OnUpdateHPR(CCmdUI* pCmdUI) 
{ 
	pCmdUI->Enable(TRUE); 
} 
 
void CMainFrame::OnUpdateForXYZ(CCmdUI* pCmdUI) 
{ 
	pCmdUI->Enable(TRUE); 
} 
 
void CMainFrame::OnUpdateForHPR(CCmdUI* pCmdUI) 
{ 
	pCmdUI->Enable(TRUE); 
} 
 
 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CMainFrame diagnostics 
 
#ifdef _DEBUG 
void CMainFrame::AssertValid() const 
{ 
	CFrameWnd::AssertValid(); 
} 
 
void CMainFrame::Dump(CDumpContext& dc) const 
{ 
	CFrameWnd::Dump(dc); 
} 
 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CMainFrame message handlers 
 
 
void CMainFrame::OnViewFullscreen()  
{ 
	// TODO: Add your command handler code here 
	if(m_bFullScreen) 
		FullScreenOff(); 
	else 
		FullScreenOn(); 
	 
} 
 
void CMainFrame::OnUpdateViewFullscreen(CCmdUI* pCmdUI)  
{ 
	// TODO: Add your command update UI handler code here 
	pCmdUI->SetCheck(m_bFullScreen);   //设置菜单栏或状态栏的选定状态  
	 
} 
 
void CMainFrame::FullScreenOn() 
{ 
	m_wndToolBar.ShowWindow(SW_HIDE); 
	m_wndStatusBar.ShowWindow(SW_HIDE); 
	GetWindowRect(&m_mainRect); 
	LONG style=::GetWindowLong(m_hWnd,GWL_STYLE); 
	style &=~WS_CAPTION; 
	::SetWindowLong(m_hWnd,GWL_STYLE,style); 
	int screenx=GetSystemMetrics(SM_CXSCREEN); 
	int screeny=GetSystemMetrics(SM_CYSCREEN); 
	SetWindowPos(NULL,0,0,screenx,screeny,SWP_NOZORDER); 
	ASSERT(m_OldMenu.GetSafeHmenu()==NULL); 
	CMenu *pOldMenu=GetMenu(); 
	m_OldMenu.Attach(pOldMenu->Detach()); 
	SetMenu((CMenu*)NULL); 
	this->ShowWindow(SW_SHOWMAXIMIZED); 
	m_bFullScreen=TRUE; 
} 
 
void CMainFrame::FullScreenOff() 
{ 
	ASSERT(m_OldMenu.GetSafeHmenu()!=NULL); 
	SetMenu(&m_OldMenu); 
	m_OldMenu.Detach(); 
	LONG style=::GetWindowLong(m_hWnd,GWL_STYLE); 
	style|=WS_CAPTION; 
	::SetWindowLong(m_hWnd,GWL_STYLE,style); 
	m_wndToolBar.ShowWindow(SW_SHOW); 
	m_wndStatusBar.ShowWindow(SW_SHOW); 
	MoveWindow(&m_mainRect); 
	RecalcLayout(TRUE); 
	m_bFullScreen=FALSE; 
} 
 
void CMainFrame::SetEyeXYZ(CString strXYZ) 
{ 
	m_wndStatusBar.SetPaneText(2,strXYZ); 
	CWindowDC dc(&m_wndStatusBar); 
	CSize sizeXYZ=dc.GetTextExtent(strXYZ); 
	m_wndStatusBar.SetPaneInfo(2,ID_INDICATOR_FORXYZ,SBPS_NORMAL,sizeXYZ.cx); 
} 
 
void CMainFrame::SetEyeHPR(CString strHPR) 
{ 
	m_wndStatusBar.SetPaneText(4,strHPR); 
	CWindowDC dc(&m_wndStatusBar); 
	CSize sizeHPR=dc.GetTextExtent(strHPR); 
	m_wndStatusBar.SetPaneInfo(4,ID_INDICATOR_FORHPR,SBPS_NORMAL,sizeHPR.cx); 
} 
 
//void CMainFrame::OnGfxEnv()  
//{ 
//	// TODO: Add your command handler code here 
//	CSetEnvDlg theDlg; 
//	theDlg.DoModal();	 
//}