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);
}