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


// MainFrm.cpp : implementation of the CMainFrame class 
// 
 
#include "stdafx.h" 
#include "test.h" 
#include "Dlg1.h" 
#include "Dlg2.h" 
#include "MainFrm.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) 
	ON_COMMAND_EX(CG_ID_VIEW_MYDIALOGBAR2, OnBarCheck) 
	ON_UPDATE_COMMAND_UI(CG_ID_VIEW_MYDIALOGBAR2, OnUpdateControlBarMenu) 
	ON_COMMAND_EX(CG_ID_VIEW_MYDIALOGBAR1, OnBarCheck) 
	ON_UPDATE_COMMAND_UI(CG_ID_VIEW_MYDIALOGBAR1, OnUpdateControlBarMenu) 
	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_SETFOCUS() 
	ON_COMMAND(ID_BUTTON_BOTTOM, OnButtonBottom) 
	ON_UPDATE_COMMAND_UI(ID_BUTTON_BOTTOM, OnUpdateButtonBottom) 
	ON_COMMAND(ID_BUTTON_SHOWL, OnButtonShowl) 
	ON_UPDATE_COMMAND_UI(ID_BUTTON_SHOWL, OnUpdateButtonShowl) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
static UINT indicators[] = 
{ 
	ID_SEPARATOR,           // status line indicator 
	ID_INDICATOR_CAPS, 
	ID_INDICATOR_NUM, 
	ID_INDICATOR_SCRL, 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
// CMainFrame construction/destruction 
 
CMainFrame::CMainFrame() 
{ 
	// TODO: add member initialization code here 
	 
} 
 
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 
	} 
 
//	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); 
//	EnableDocking(CBRS_ALIGN_ANY);	 
//	DockControlBar(&m_wndToolBar);	 
 
 
 
	if (!m_wndCommandInput.Create(this)) 
	{ 
		TRACE("Failed to create toolbox\n"); 
		return -1;      // fail to create 
	} 
 
	{ 
		// Initialize dialog bar m_wndMyDialogBar3 
		if (!m_wndMyDialogBar3.Create(this, CG_IDD_MYDIALOGBAR2, 
			CBRS_TOP | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE, 
			CG_ID_VIEW_MYDIALOGBAR2)) 
		{ 
			TRACE0("Failed to create dialog bar m_wndMyDialogBar3\n"); 
			return -1;		// fail to create 
		} 
 
//		m_wndMyDialogBar3.EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM); 
//		EnableDocking(CBRS_ALIGN_ANY); 
//		DockControlBar(&m_wndMyDialogBar3); 
 
	} 
	//m_wndToolBar.SetButtonText(0," 控制 "); 
//	m_wndToolBar.SetButtonText(1," 编辑 "); 
	/////////////调整工具条///////////////// 
	CRect rc(0, 0, 0, 0); 
	CSize sizeMax(0, 0); 
	CToolBarCtrl& bar = m_wndToolBar.GetToolBarCtrl(); 
	for (int nIndex = bar.GetButtonCount() - 1; nIndex >= 0; nIndex--) 
	{ 
		bar.GetItemRect(nIndex, rc); 
 
		rc.NormalizeRect(); 
		sizeMax.cx = __max(rc.Size().cx, sizeMax.cx); 
		sizeMax.cy = __max(rc.Size().cy, sizeMax.cy); 
	} 
	//sizeMax.cx += 10; 
	m_wndToolBar.SetSizes(sizeMax, CSize(16,15)); 
	////////////创建TAB Control,并把它加入到ControlBar中 
	/// 需要注意的是:同一个ControlBar只能加入一个"一级子窗口" 
	m_TabCtrl.Create(TCS_DOWN|WS_CHILD|WS_VISIBLE,CRect(0,0,150,340),&m_wndMyDialogBar3,125); 
	/////////////这一段代码创建树型控件//////////// 
	if (!m_wndTree.Create(WS_CHILD|WS_VISIBLE| 
		TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT, 
		CRect(0, 0, 0, 0), &m_TabCtrl, 50)) 
	{ 
		TRACE0("Failed to create instant bar child\n"); 
		return -1; 
	} 
	m_wndTree.ModifyStyleEx(0, WS_EX_CLIENTEDGE); 
	///往树型控件添加内容 
	HTREEITEM hti = m_wndTree.InsertItem(_T("岩海公司")); 
	m_wndTree.InsertItem(_T("华银大厦")); 
	m_wndTree.InsertItem(_T("1304"), hti); 
	m_wndTree.InsertItem(_T("1305"), hti); 
	m_wndTree.InsertItem(_T("1306"), hti); 
	m_wndTree.InsertItem(_T("1307"), hti); 
	///将树型控件加入到TabCtrl中 
	m_TabCtrl.AddPage(&m_wndTree,"VC知识库",IDI_ICON1); 
	m_TabCtrl.AddPage(RUNTIME_CLASS(CDlg1),CG_IDD_MYDIALOGBAR,"第二页",IDI_ICON2); 
	m_TabCtrl.AddPage(RUNTIME_CLASS(CDlg2),CG_IDD_MYDIALOGBAR1,"第三页",IDI_ICON3); 
 
	m_TabCtrl.UpdateWindow(); 
	 
	///////////////停靠控制/////////////////// 
	m_wndMyDialogBar3.SetBarStyle(m_wndMyDialogBar3.GetBarStyle() | 
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); 
//	m_wndMyDialogBar2.SetBarStyle(m_wndMyDialogBar2.GetBarStyle() | 
//		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); 
		 
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); 
	m_wndMyDialogBar3.EnableDocking(CBRS_ALIGN_ANY); 
//	m_wndMyDialogBar2.EnableDocking(CBRS_ALIGN_ANY); 
	EnableDocking(CBRS_ALIGN_ANY); 
	DockControlBar(&m_wndToolBar); 
	DockControlBar(&m_wndMyDialogBar3, AFX_IDW_DOCKBAR_LEFT); 
//	DockControlBar(&m_wndMyDialogBar2, AFX_IDW_DOCKBAR_LEFT); 
	/////////使浮动与停靠显示相同的头部//// 
	#ifdef _SCB_REPLACE_MINIFRAME 
    m_pFloatingFrameClass = RUNTIME_CLASS(CSCBMiniDockFrameWnd); 
	#endif //_SCB_REPLACE_MINIFRAME 
 
	m_wndCommandInput.ModifyStyleEx(0,WS_EX_CLIENTEDGE); 
	m_wndCommandInput.SetBarStyle(m_wndCommandInput.GetBarStyle() | CBRS_SIZE_DYNAMIC); 
	m_wndCommandInput.EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM); 
	EnableDocking(CBRS_ALIGN_ANY); 
	DockControlBar(&m_wndCommandInput, AFX_IDW_DOCKBAR_BOTTOM); 
	
 
	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 
	cs.dwExStyle &= ~WS_EX_CLIENTEDGE; 
	cs.lpszClass = AfxRegisterWndClass(0); 
	return 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::OnSetFocus(CWnd* pOldWnd)  
{ 
	CFrameWnd::OnSetFocus(pOldWnd); 
	 
	// TODO: Add your message handler code here 
	 
} 
 
void CMainFrame::OnButtonBottom()  
{ 
//ShowControlBar(&m_wndMyDialogBar2, !m_wndMyDialogBar2.IsVisible(), FALSE); 
	 
} 
 
void CMainFrame::OnUpdateButtonBottom(CCmdUI* pCmdUI)  
{ 
//pCmdUI->Enable(); 
//	pCmdUI->SetCheck(m_wndMyDialogBar2.IsVisible()); 
	 
} 
 
void CMainFrame::OnButtonShowl()  
{ 
//	ShowControlBar(&m_wndMyDialogBar, !m_wndMyDialogBar.IsVisible(), FALSE); 
	 
} 
 
void CMainFrame::OnUpdateButtonShowl(CCmdUI* pCmdUI)  
{ 
//		pCmdUI->Enable(); 
//	pCmdUI->SetCheck(m_wndMyDialogBar.IsVisible()); 
} 
 
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)  
{/* 
	if (!wndSplitter.CreateStatic(this, 1, 2)) return false; 
 
	if (!wndSplitter.CreateView(0, 1, pContext->m_pNewViewClass, CSize(0,0), pContext)) return false; 
	DWORD dwf = CGfxOutBarCtrl::fDragItems|CGfxOutBarCtrl::fEditGroups|CGfxOutBarCtrl::fEditItems|CGfxOutBarCtrl::fRemoveGroups| 
				CGfxOutBarCtrl::fRemoveItems|CGfxOutBarCtrl::fAddGroups|CGfxOutBarCtrl::fAnimation; 
//				|CGfxOutBarCtrl::fSelHighlight; 
 
 
	wndBar.Create(WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), &wndSplitter, wndSplitter.IdFromRowCol(0, 0), dwf); 
	wndBar.SetOwner(this); 
 
	imaLarge.Create(IDB_IMAGELIST, 32, 0, RGB(128,128,128)); 
	imaSmall.Create(IDB_SMALL_IMAGELIST, 16, 0, RGB(0,128,128)); 
 
	wndBar.SetImageList(&imaLarge, CGfxOutBarCtrl::fLargeIcon); 
	wndBar.SetImageList(&imaSmall, CGfxOutBarCtrl::fSmallIcon); 
 
	wndTree.Create(WS_CHILD|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS, CRect(0,0,0,0), &wndBar, 1010); 
	wndTree.SetImageList(&imaSmall, TVSIL_NORMAL); 
 
	wndBar.SetAnimationTickCount(20); 
 
	wndBar.SetAnimSelHighlight(200); 
 
 
	HTREEITEM htm = wndTree.InsertItem("tree 1", 0,0); 
	HTREEITEM htm1 = wndTree.InsertItem("tree 2", 1,1, htm); 
	wndTree.InsertItem("tree 3", 1,1, htm); 
 
	for (int xx = 0; xx < 30; xx ++) 
	{ 
		htm = wndTree.InsertItem("tree 1", 0,0); 
		htm1 = wndTree.InsertItem("tree 2", 1,1, htm); 
		wndTree.InsertItem("tree 3", 1,1, htm); 
 
		htm = wndTree.InsertItem("tree 1", 0,0); 
		htm1 = wndTree.InsertItem("tree asdasdasdadasdasdasdasdas2", 1,1, htm); 
		wndTree.InsertItem("tree 3", 1,1, htm); 
	} 
	 
	wndBar.AddFolder("Folder 1", 0); 
	wndBar.AddFolderBar("TreeBar", &wndTree); 
	wndBar.AddFolder("Folder 2", 1); 
	wndBar.AddFolder("Folder 3", 2); 
	wndBar.AddFolder("Folder 4", 3); 
 
 
	wndBar.InsertItem(0, 0, "Item 1", 0, 0); 
	wndBar.InsertItem(0, 1, "Item 2", 1, 0); 
	wndBar.InsertItem(0, 2, "Item 3", 2, 0); 
	wndBar.InsertItem(0, 3, "Item 4", 3, 0); 
	wndBar.InsertItem(0, 4, "Item 5", 0, 0); 
	wndBar.InsertItem(0, 5, "Item 6", 1, 0); 
	wndBar.InsertItem(0, 6, "Item 7", 2, 0); 
	wndBar.InsertItem(0, 7, "Item 8", 3, 0); 
	wndBar.InsertItem(0, 8, "Item 9", 0, 0); 
	wndBar.InsertItem(0, 9, "Item 10", 1, 0); 
	wndBar.InsertItem(0, 10, "Item 11", 2, 0); 
	wndBar.InsertItem(0, 11, "Item 12", 3, 0); 
	wndBar.InsertItem(0, 12, "Item 13", 0, 0); 
	wndBar.InsertItem(0, 13, "Item 14", 1, 0); 
	wndBar.InsertItem(0, 14, "Item 15", 2, 0); 
	wndBar.InsertItem(0, 15, "Item 16", 3, 0); 
 
	wndBar.InsertItem(0, 1, "New Item 1", 3, 0); 
	wndBar.InsertItem(0, 17, "Item 17", 3, 0); 
 
 
	wndBar.InsertItem(2, 0, "Item 1", 0, 0); 
	wndBar.InsertItem(2, 1, "Let's see what this Item will become actually 2", 1, 0); 
	wndBar.InsertItem(2, 2, "Item 3", 2, 0); 
	wndBar.InsertItem(2, 3, "Item 4", 3, 0); 
 
	wndBar.SetSelFolder(0); 
 
	CRect r; 
	GetWindowRect(&r); 
 
	int w1 = r.Width()/5; 
	int w2 = r.Width()/4; 
 
	wndSplitter.SetColumnInfo( 0, w1, 0 ); 
	wndSplitter.SetColumnInfo( 1, w2, 0 ); 
 
	wndSplitter.RecalcLayout(); 
	*/ 
	 
	return CFrameWnd::OnCreateClient(lpcs, pContext); 
}