www.pudn.com > geomm1.zip > SampleView.cpp


// SampleView.cpp : implementation of the CSampleView class 
// 
 
#include "stdafx.h" 
#include "Sample.h" 
 
#include "SampleDoc.h" 
#include "SampleView.h" 
#include "GeometryManager.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CSampleView 
 
IMPLEMENT_DYNCREATE(CSampleView, CFormView) 
 
BEGIN_MESSAGE_MAP(CSampleView, CFormView) 
	//{{AFX_MSG_MAP(CSampleView) 
	ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, OnSelchangeTab) 
	ON_NOTIFY(TCN_SELCHANGING, IDC_TAB, OnSelchangingTab) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CSampleView construction/destruction 
 
CSampleView::CSampleView() 
	: CFormView(CSampleView::IDD) 
{ 
	//{{AFX_DATA_INIT(CSampleView) 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
	// TODO: add construction code here 
 
} 
 
CSampleView::~CSampleView() 
{ 
} 
 
void CSampleView::DoDataExchange(CDataExchange* pDX) 
{ 
	CFormView::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CSampleView) 
	DDX_Control(pDX, IDC_TAB, m_TabCtrl); 
	//}}AFX_DATA_MAP 
} 
 
BOOL CSampleView::PreCreateWindow(CREATESTRUCT& cs) 
{ 
	// TODO: Modify the Window class or styles here by modifying 
	//  the CREATESTRUCT cs 
 
	return CFormView::PreCreateWindow(cs); 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CSampleView diagnostics 
 
#ifdef _DEBUG 
void CSampleView::AssertValid() const 
{ 
	CFormView::AssertValid(); 
} 
 
void CSampleView::Dump(CDumpContext& dc) const 
{ 
	CFormView::Dump(dc); 
} 
 
CSampleDoc* CSampleView::GetDocument() // non-debug version is inline 
{ 
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSampleDoc))); 
	return (CSampleDoc*)m_pDocument; 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CSampleView message handlers 
 
void CSampleView::OnInitialUpdate()  
{ 
	CFormView::OnInitialUpdate(); 
	 
	// we don't want any scroll bars 
	SetScrollSizes(MM_TEXT, CSize(0, 0)); 
 
	// create the tab pages 
	m_TabPage1.Create(IDD_TAB_PAGE1, &m_TabCtrl); 
	m_TabPage2.Create(IDD_TAB_PAGE2, &m_TabCtrl); 
	m_TabPage3.Create(IDD_TAB_PAGE3, &m_TabCtrl); 
 
	TC_ITEM tcItem = {0}; 
	tcItem.mask = TCIF_TEXT; 
	tcItem.pszText = "Page 1"; 
	m_TabCtrl.InsertItem(0, &tcItem); 
	tcItem.pszText = "Page 2"; 
	m_TabCtrl.InsertItem(1, &tcItem); 
	tcItem.pszText = "Page 3"; 
	m_TabCtrl.InsertItem(2, &tcItem); 
 
	m_TabPage1.ShowWindow(SW_SHOW); 
 
	// initialize the geometry manager 
	// 
	// the default behavior is fine 
	// 
	HGEOM hGeom = GmStartDefinition(0); 
	ASSERT(hGeom); 
	if (!hGeom) 
		return; 
	 
	// add the top-level frame window group 
	// 
	// arrange its direct children vertically 
	// 
	// Notice that since this window are a CFormView, you need to 
	// pass in the window handle of the parent frame window. 
	// 
	HGMGROUP hTopFrame = GmAddTopFrameWnd(hGeom, GetParentFrame()->m_hWnd, GM_VERTICAL); 
	if (hTopFrame) 
	{ 
		// add the generic group for the static text and edit field 
		// 
		// arrange its direct children horizontally 
		// give it a weight of 0 
		// 
		HGMGROUP hGroup1 = GmAddGroup(hGeom, hTopFrame, GM_HORIZONTAL, 0); 
		if (hGroup1) 
		{ 
			// add the static text group 
			// 
			// left-align and vertically center it 
			// give it a weight of 0 
			// 
			GmAddWnd(hGeom, hGroup1, ::GetDlgItem(m_hWnd, IDC_NAME_LABEL), GM_LEFT | GM_VCENTER, 0); 
			 
			// add the edit field group 
			// 
			// allow it to grow horizontally 
			// give it a weight of 1 
			// 
			GmAddWnd(hGeom, hGroup1, ::GetDlgItem(m_hWnd, IDC_NAME), GM_GROW_X, 1); 
		} 
			 
		// add the generic group for the rest of the controls 
		// 
		// arrange its direct children horizontally 
		// give it a weight of 1 
		// 
		hGroup1 = GmAddGroup(hGeom, hTopFrame, GM_HORIZONTAL, 1); 
		if (hGroup1) 
		{ 
			// add the generic group for the controls on the left 
			// 
			// arrange its direct children vertically 
			// give it a weight of 3 
			// 
			HGMGROUP hGroup2 = GmAddGroup(hGeom, hGroup1, GM_VERTICAL, 3); 
			if (hGroup2) 
			{ 
				// add the generic group for the static text and edit field 
				// 
				// arrange its direct children vertically 
				// give it a weight of 1 
				// 
				HGMGROUP hGroup3 = GmAddGroup(hGeom, hGroup2, GM_VERTICAL, 1); 
				if (hGroup3) 
				{ 
					// add the static text group 
					// 
					// left-align and vertically center it 
					// give it a weight of 0 
					// 
					GmAddWnd(hGeom, hGroup3, ::GetDlgItem(m_hWnd, IDC_ADDRESS_LABEL), GM_LEFT | GM_VCENTER, 0); 
					 
					// add the multiline edit field group 
					// 
					// allow it to grow (in both directions) 
					// give it a weight of 1 
					// 
					GmAddWnd(hGeom, hGroup3, ::GetDlgItem(m_hWnd, IDC_ADDRESS), GM_GROW, 1); 
				} 
				 
				// add the group box group 
				// 
				// arrange its direct children vertically 
				// horizontally center it 
				// give it a weight of 0 
				// 
				hGroup3 = GmAddGroupBox(hGeom, hGroup2, ::GetDlgItem(m_hWnd, IDC_STUFF), GM_VERTICAL | GM_HCENTER, 0); 
				if (hGroup3) 
				{ 
					// add the radio button groups 
					// 
					// left-align and vertically center them 
					// give them a weight of 0 
					// 
					GmAddWnd(hGeom, hGroup3, ::GetDlgItem(m_hWnd, IDC_STUFF_1), GM_LEFT | GM_VCENTER, 0); 
					GmAddWnd(hGeom, hGroup3, ::GetDlgItem(m_hWnd, IDC_STUFF_2), GM_LEFT | GM_VCENTER, 0); 
					GmAddWnd(hGeom, hGroup3, ::GetDlgItem(m_hWnd, IDC_STUFF_3), GM_LEFT | GM_VCENTER, 0); 
				} 
			} 
			 
			// add the generic group for the controls on the right 
			// 
			// arrange its direct children vertically 
			// give it a weight of 1 
			// 
			hGroup2 = GmAddGroup(hGeom, hGroup1, GM_VERTICAL, 1); 
			if (hGroup2) 
			{ 
				// add the static text group 
				// 
				// left-align and vertically center it 
				// give it a weight of 0 
				// 
				GmAddWnd(hGeom, hGroup2, ::GetDlgItem(m_hWnd, IDC_TAB_LABEL), GM_LEFT | GM_VCENTER, 0); 
				 
				// add the tab control group 
				// 
				// arrange its direct children overlapped 
				// allow it to grow in both directions 
				// give it a weight of 1 
				// 
				HGMGROUP hGroup3 = GmAddTabControl(hGeom, hGroup2, m_TabCtrl.m_hWnd, GM_GROW | GM_OVERLAPPED, 1); 
				if (hGroup3) 
				{ 
					// add the first tab page 
					// 
					// arrange its direct children horizontally 
					// allow it to grow in both directions 
					// give it a weight of 1 
					// 
					HGMGROUP hGroup4 = GmAddChildDialog(hGeom, hGroup3, m_TabPage1.m_hWnd, GM_GROW | GM_HORIZONTAL, 1); 
					if (hGroup4) 
					{ 
						// add the static text group 
						// 
						// left-align and vertically center it 
						// give it a weight of 0 
						// 
						GmAddWnd(hGeom, hGroup4, ::GetDlgItem(m_TabPage1.m_hWnd, IDC_NAME_LABEL), GM_LEFT | GM_VCENTER, 0); 
					 
						// add the edit field group 
						// 
						// vertically center it 
						// allow it to grow horizontally 
						// give it a weight of 1 
						// 
						GmAddWnd(hGeom, hGroup4, ::GetDlgItem(m_TabPage1.m_hWnd, IDC_NAME), GM_GROW_X | GM_VCENTER, 1); 
					} 
 
					// add the second tab page 
					// 
					// arrange its direct children vertically 
					// allow it to grow in both directions 
					// give it a weight of 1 
					// 
					hGroup4 = GmAddChildDialog(hGeom, hGroup3, m_TabPage2.m_hWnd, GM_GROW | GM_VERTICAL, 1); 
					if (hGroup4) 
					{ 
						// add the static text group 
						// 
						// left-align and vertically center it 
						// give it a weight of 0 
						// 
						GmAddWnd(hGeom, hGroup4, ::GetDlgItem(m_TabPage2.m_hWnd, IDC_INFO_LABEL), GM_LEFT | GM_VCENTER, 0); 
						 
						// add the multiline edit field group 
						// 
						// allow it to grow (in both directions) 
						// give it a weight of 1 
						// 
						GmAddWnd(hGeom, hGroup4, ::GetDlgItem(m_TabPage2.m_hWnd, IDC_INFO), GM_GROW, 1); 
					} 
 
					// add the third tab page 
					// 
					// arrange its direct children vertically 
					// allow it to grow in both directions 
					// give it a weight of 1 
					// 
					hGroup4 = GmAddChildDialog(hGeom, hGroup3, m_TabPage3.m_hWnd, GM_GROW | GM_VERTICAL, 1); 
					if (hGroup4) 
					{ 
						// add the generic group for the top two static frame controls 
						// 
						// arrange its direct children horizontally 
						// give it a weight of 1 
						// 
						HGMGROUP hGroup5 = GmAddGroup(hGeom, hGroup4, GM_HORIZONTAL, 1); 
						if (hGroup5) 
						{ 
							// add the static frame groups 
							// 
							// allow them to grow (in both directions) 
							// give them a weight of 1 
							// 
							GmAddStaticFrame(hGeom, hGroup5, ::GetDlgItem(m_TabPage3.m_hWnd, IDC_FRAME1), GM_GROW, 1); 
							GmAddStaticFrame(hGeom, hGroup5, ::GetDlgItem(m_TabPage3.m_hWnd, IDC_FRAME2), GM_GROW, 1); 
						} 
 
						// add the bottom static frame group 
						// 
						// allow it to grow (in both directions) 
						// give it a weight of 1 
						// 
						GmAddStaticFrame(hGeom, hGroup4, ::GetDlgItem(m_TabPage3.m_hWnd, IDC_FRAME3), GM_GROW, 1); 
					} 
				} 
				 
				// add the generic group for the buttons 
				// 
				// horizontally center it 
				// arrange its direct children horizontally 
				// give it a weight of 1 
				// 
				hGroup3 = GmAddGroup(hGeom, hGroup2, GM_HORIZONTAL | GM_HCENTER, 0); 
				if (hGroup3) 
				{ 
					// add the button groups 
					// 
					// give them a weight of 0 
					// 
					GmAddWnd(hGeom, hGroup3, ::GetDlgItem(m_hWnd, IDC_ADD), 0, 0); 
					GmAddWnd(hGeom, hGroup3, ::GetDlgItem(m_hWnd, IDC_EDIT), 0, 0); 
					GmAddWnd(hGeom, hGroup3, ::GetDlgItem(m_hWnd, IDC_DELETE), 0, 0); 
				} 
			} 
		} 
	} 
	 
	// end the definition and start the manager 
	// 
	VERIFY(GmEndDefinition(hGeom)); 
} 
 
void CSampleView::OnSelchangingTab(NMHDR* /*pNMHDR*/, LRESULT* pResult)  
{ 
	int iSel = m_TabCtrl.GetCurSel(); 
 
	switch (iSel) 
	{ 
	case 0: 
		m_TabPage1.ShowWindow(SW_HIDE); 
		break; 
	case 1: 
		m_TabPage2.ShowWindow(SW_HIDE); 
		break; 
	case 2: 
		m_TabPage3.ShowWindow(SW_HIDE); 
		break; 
	} 
	 
	*pResult = 0; 
} 
 
void CSampleView::OnSelchangeTab(NMHDR* /*pNMHDR*/, LRESULT* pResult)  
{ 
	int iSel = m_TabCtrl.GetCurSel(); 
 
	switch (iSel) 
	{ 
	case 0: 
		m_TabPage1.ShowWindow(SW_SHOW); 
		break; 
	case 1: 
		m_TabPage2.ShowWindow(SW_SHOW); 
		break; 
	case 2: 
		m_TabPage3.ShowWindow(SW_SHOW); 
		break; 
	} 
 
	*pResult = 0; 
}