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

📄 tabsheet.cpp

📁 VC&Matlab混合编程实现无线电导航指示器
💻 CPP
字号:
// TabSheet.cpp : implementation file
//

#include "stdafx.h"

#include "TabSheet.h"
#include "../resource.h"
#include "../APPStatic.h"

//#include "matlab.hpp"
// #include "libmwsglm.hpp"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////////////////////
// CTabSheet

CTabSheet::CTabSheet()
{
	m_nNumOfPages = 0;
	m_nCurrentPage = 0;
}

CTabSheet::~CTabSheet()
{
}


BEGIN_MESSAGE_MAP(CTabSheet, CTabCtrl)
	//{{AFX_MSG_MAP(CTabSheet)
	ON_WM_LBUTTONDOWN()
	ON_NOTIFY_REFLECT(TCN_SELCHANGE, OnSelchange)
	ON_NOTIFY_REFLECT(TCN_SELCHANGING, OnSelchanging)
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTabSheet message handlers

BOOL CTabSheet::AddPage(LPCTSTR title, CDialog *pDialog,UINT ID)
{
	if( MAXPAGE == m_nNumOfPages )
		return FALSE;

	m_nNumOfPages++;

	m_pPages[m_nNumOfPages-1] = pDialog;
	m_IDD[m_nNumOfPages-1] = ID;
	m_Title[m_nNumOfPages-1] = title;

	return TRUE;
}

void CTabSheet::SetRect()
{
	CRect tabRect, itemRect;
	int nX, nY, nXc, nYc;

	GetClientRect(&tabRect);
	GetItemRect(0, &itemRect);

	nX=itemRect.left;
	nY=itemRect.bottom+1;
	nXc=tabRect.right-itemRect.left-2;
	nYc=tabRect.bottom-nY-2;

	m_pPages[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);
	for( int nCount=1; nCount < m_nNumOfPages; nCount++ )
		m_pPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);

}

void CTabSheet::Show()
{
	for( int i=0; i < m_nNumOfPages; i++ )
	{
		m_pPages[i]->Create( m_IDD[i], this );
		InsertItem( i, m_Title[i] );
	}

	m_pPages[0]->ShowWindow(SW_SHOW);
//	HighlightItem(0,TRUE);

	for( i=1; i < m_nNumOfPages; i++){
//		HighlightItem(i,FALSE);
		m_pPages[i]->ShowWindow(SW_HIDE);
	}
	SetRect();

}

void CTabSheet::OnLButtonDown(UINT nFlags, CPoint point) 
{
	CTabCtrl::OnLButtonDown(nFlags, point);

	if(m_nCurrentPage != GetCurFocus())
	{
		m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);
//		HighlightItem(m_nCurrentPage,FALSE);
		m_nCurrentPage=GetCurFocus();
		m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);
		//m_pPages[m_nCurrentPage]->SetFocus();
//		HighlightItem(m_nCurrentPage,TRUE);
		
	}
}

int CTabSheet::SetCurSel(int nItem)
{
	if( nItem < 0 || nItem >= m_nNumOfPages)
		return -1;

	int ret = m_nCurrentPage;

	if(m_nCurrentPage != nItem ){
		m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);
//	HighlightItem(m_nCurrentPage,FALSE);
		m_nCurrentPage = nItem;
		m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);
//		HighlightItem(m_nCurrentPage,TRUE);
	//	m_pPages[m_nCurrentPage]->SetFocus();
		CTabCtrl::SetCurSel(nItem);
	}

 	return ret;
//return CTabCtrl::SetCurSel(nItem);
}

int CTabSheet::GetCurSel()
{
	return CTabCtrl::GetCurSel();
}


void CTabSheet::OnSelchange(NMHDR* pNMHDR, LRESULT* pResult) 
{  
//	*pResult = 0;
	*pResult = 0; 
	switch(pNMHDR->idFrom){
		case IDS_SHEET:
			APPStatic::GetMainView()->RefreshCurSheet(GetCurSel());
			
			if (GetCurSel()!=1){
				APPStatic::GetMainView()->m_bIsMatlabFigureShowing=FALSE;
				APPStatic::GetMainView()->OnRotate3d();
			}else{
				APPStatic::GetMainView()->OnRotate3d();
				APPStatic::GetMainView()->m_bIsMatlabFigureShowing=TRUE;
			}
			break;
		case IDS_SHEETBEACON:
			break;
		default:;
	}
	
}

void CTabSheet::OnSelchanging(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here

}

void CTabSheet::RefreshShow()
{


	for( int i=1; i < m_nNumOfPages; i++){
//		HighlightItem(i,FALSE);
		m_pPages[i]->ShowWindow(SW_HIDE);
	}
	int nCurrentItem=GetCurSel();
	m_pPages[nCurrentItem]->ShowWindow(SW_SHOW);
//	HighlightItem(nCurrentItem,TRUE);
	SetRect();


}

BOOL CTabSheet::PreCreateWindow(CREATESTRUCT& cs) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CTabCtrl::PreCreateWindow(cs);
}


int CTabSheet::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CTabCtrl::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	
	return 0;
}

⌨️ 快捷键说明

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