예제 #1
0
CSize CNativeToolbar::getMaxImageSize()
{
    CSize sizeMax(m_nHeight-MIN_TOOLBAR_IDENT, m_nHeight-MIN_TOOLBAR_IDENT);

    for ( int i = 0; i < (int)m_arButtons.size(); i++ )
    {
        //sizeMax.cx = m_arButtons.elementAt(i)->m_sizeImage.cx > sizeMax.cx ? m_arButtons.elementAt(i)->m_sizeImage.cx : sizeMax.cx;
        //sizeMax.cy = m_arButtons.elementAt(i)->m_sizeImage.cy > sizeMax.cy ? m_arButtons.elementAt(i)->m_sizeImage.cy : sizeMax.cy;
        if ( m_arButtons.elementAt(i)->m_hImage )
        {
            sizeMax = m_arButtons.elementAt(i)->m_sizeImage;
            break;
        }
    }

    return sizeMax;
}
void CResizableSplitterWnd::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
    if ((GetStyle() & SPLS_DYNAMIC_SPLIT) &&
        GetRowCount() == 1 && GetColumnCount() == 1)
    {
        CWnd* pPane = GetActivePane();
        if (pPane != NULL)
        {
            // get the extra size from child to parent
            CRect rectClient, rectWnd;
            GetWindowRect(rectWnd);
            pPane->GetWindowRect(rectClient);
            CSize sizeExtra = rectWnd.Size() - rectClient.Size();

            ChainMinMaxInfo(lpMMI, pPane->m_hWnd, sizeExtra);
        }
    }
    else if (!(GetStyle() & SPLS_DYNAMIC_SPLIT))
    {
        ASSERT(m_nCols > 0 && m_nRows > 0);

        CSize sizeMin(0,0), sizeMax(0,0);
        for (int col = 0; col < m_nCols; ++col)
        {
            // calc min and max width for each column
            int min = 0;
            int max = LONG_MAX;
            for (int row = 0; row < m_nRows; ++row)
            {
                CWnd* pWnd = GetPane(row, col);
                // ask the child window for track size
                MINMAXINFO mmiChild = *lpMMI;
                mmiChild.ptMinTrackSize.x = 0;
                mmiChild.ptMaxTrackSize.x = LONG_MAX;
                ::SendMessage(pWnd->GetSafeHwnd(), WM_GETMINMAXINFO, 0, (LPARAM)&mmiChild);
                max = __min(max, mmiChild.ptMaxTrackSize.x);
                min = __max(min, mmiChild.ptMinTrackSize.x);
            }
            // sum all column widths
            if (sizeMax.cx == LONG_MAX || max == LONG_MAX)
                sizeMax.cx = LONG_MAX;
            else
                sizeMax.cx += max + m_cxSplitterGap;
            sizeMin.cx += min + m_cxSplitterGap;
        }
        for (int row = 0; row < m_nRows; ++row)
        {
            // calc min and max height for each row
            int min = 0;
            int max = LONG_MAX;
            for (int col = 0; col < m_nCols; ++col)
            {
                CWnd* pWnd = GetPane(row, col);
                // ask the child window for track size
                MINMAXINFO mmiChild = *lpMMI;
                mmiChild.ptMinTrackSize.y = 0;
                mmiChild.ptMaxTrackSize.y = LONG_MAX;
                ::SendMessage(pWnd->GetSafeHwnd(), WM_GETMINMAXINFO, 0, (LPARAM)&mmiChild);
                max = __min(max, mmiChild.ptMaxTrackSize.y);
                min = __max(min, mmiChild.ptMinTrackSize.y);
            }
            // sum all row heights
            if (sizeMax.cy == LONG_MAX || max == LONG_MAX)
                sizeMax.cy = LONG_MAX;
            else
                sizeMax.cy += max + m_cySplitterGap;
            sizeMin.cy += min + m_cySplitterGap;
        }
        // adjust total size: add the client border and
        // we counted one splitter more than necessary
        sizeMax.cx += 2*m_cxBorder - m_cxSplitterGap;
        sizeMax.cy += 2*m_cyBorder - m_cySplitterGap;
        sizeMin.cx += 2*m_cxBorder - m_cxSplitterGap;
        sizeMin.cy += 2*m_cyBorder - m_cySplitterGap;
        // add non-client size
        CRect rectExtra(0,0,0,0);
        ::AdjustWindowRectEx(&rectExtra, GetStyle(), !(GetStyle() & WS_CHILD) &&
            ::IsMenu(GetMenu()->GetSafeHmenu()), GetExStyle());
        sizeMax += rectExtra.Size();
        sizeMin += rectExtra.Size();
        // set minmax info
        lpMMI->ptMinTrackSize.x = __max(lpMMI->ptMinTrackSize.x, sizeMin.cx);
        lpMMI->ptMinTrackSize.y = __max(lpMMI->ptMinTrackSize.y, sizeMin.cy);
        lpMMI->ptMaxTrackSize.x = __min(lpMMI->ptMaxTrackSize.x, sizeMax.cx);
        lpMMI->ptMaxTrackSize.y = __min(lpMMI->ptMaxTrackSize.y, sizeMax.cy);
    }
}
예제 #3
0
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	// create a view to occupy the client area of the frame
	if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
		CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
	{
		TRACE0("Failed to create view window\n");
		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
	}

	/////////////创建控制条///////////////
	if (!m_wndMyBar1.Create(_T("我的控制条"), this, CSize(650,400),TRUE,123))
	{
		TRACE0("Failed to create mybar\n");
			return -1;
	}
	if (!m_wndMyBar2.Create(_T("我的控制条2"), this,CSize(700,400),TRUE,124))
	{
		TRACE0("Failed to create mybar\n");
			return -1;
	}
	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,100,100),&m_wndMyBar1,125);
	/////////////这一段代码创建树型控件////////////
// 	if (!m_wndTree.Create(WS_CHILD|WS_VISIBLE|
// 		TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,
// 		CRect(0, 0, 0, 0), &m_TabCtrl, IDC_MYTREECTRL))
// 	{
// 		TRACE0("Failed to create instant bar child\n");
// 		return -1;
// 	}
//	m_wndTree.ModifyStyleEx(0, WS_EX_CLIENTEDGE);
	///往树型控件添加内容
	///将树型控件加入到TabCtrl中
	//	m_TabCtrl.AddPage(RUNTIME_CLASS(CSupCardDlg),IDD_DIALOGBAR5,"发行母卡",IDI_ICON2);
	
#if 1
	m_TabCtrl.AddPage(RUNTIME_CLASS(CKeyCardDlg),IDD_DIALOGBAR,"发行密钥卡",IDI_ICON1);
#endif
	m_TabCtrl.AddPage(RUNTIME_CLASS(CMyDlg),IDD_DIALOGBAR2,"发行PSAM卡",IDI_ICON2);
    m_TabCtrl.AddPage(RUNTIME_CLASS(CUserCardDlg),IDD_DIALOGBAR3,"发行用户卡",IDI_ICON3);

	m_TabCtrl.AddPage(RUNTIME_CLASS(CTestCardDlg),IDD_DIALOGBAR4,"测试读写卡",IDI_ICON3);
	m_TabCtrl.UpdateWindow();
	////////对话框///////////
	//if(!m_wndVCKBASE.Create(IDD_DIALOGBAR,&m_wndMyBar1))
	//	return -1;
	//m_wndVCKBASE.ShowWindow(SW_SHOW);

	////////编辑控件///////////
	if(!m_wndEdit.Create(WS_VSCROLL|WS_HSCROLL|WS_CHILD|WS_VISIBLE|ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN,CRect(0,0,0,0),&m_wndMyBar2,101))
		return -1;
	m_wndEdit.ModifyStyleEx(0,WS_EX_CLIENTEDGE);
	///////////////停靠控制///////////////////
	m_wndMyBar1.SetBarStyle(m_wndMyBar1.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
	m_wndMyBar2.SetBarStyle(m_wndMyBar2.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	m_wndMyBar1.EnableDocking(CBRS_ALIGN_ANY);
	m_wndMyBar2.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);
	DockControlBar(&m_wndMyBar1, AFX_IDW_DOCKBAR_LEFT);
	DockControlBar(&m_wndMyBar2, AFX_IDW_DOCKBAR_LEFT);
	/////////使浮动与停靠显示相同的头部////
	#ifdef _SCB_REPLACE_MINIFRAME
    m_pFloatingFrameClass = RUNTIME_CLASS(CSCBMiniDockFrameWnd);
	#endif //_SCB_REPLACE_MINIFRAME
	char sVersion[20]="";
	char sBuildDate[20]="";
	char sDesc[20]="";
	CString sVerInfo="密钥卡管理系统 ";
	ks_getversioninfo(sVersion,sBuildDate,sDesc);
	sVerInfo+=sVersion;
	sVerInfo+="-";
	sVerInfo+=sBuildDate;
	sVerInfo+="Build";
	if(strlen(sDesc))
	{
		sVerInfo+="(";
		sVerInfo+=sDesc;
		sVerInfo+=")";
	}
	AfxGetMainWnd()->SetWindowText(sVerInfo);
	load_config();
	if(ks_licence("kscard","654321"))
	{
		AfxMessageBox("加载licence失败");
		return -1;
	}
	else
	{
		int ret=0;
		ret=ks_openport(0,115200);
		if(ret)
		{
			((CMainFrame*)AfxGetMainWnd())->ShowLog(ks_geterrmsg(NULL));	
			return 0;
		}
		//ks_beep();
		/*
		if(ks_openport(100,9600)==0)
		{
			ks_beep();
			if(ks_setcardtype(0)==0)
				ks_beep();
		}
		*/
		// 加载配置文件
	}
	return 0;
}
예제 #4
0
파일: MainFrm.cpp 프로젝트: tchv71/StartPP
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_TOOLTIPS | CBRS_FLYBY) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	// Set the text for each button
	//CToolBarCtrl& bar = m_wndToolBar.GetToolBarCtrl();

	int	nIndex = 0;
	TBBUTTON tb;

    for (nIndex = m_wndToolBar.GetToolBarCtrl().GetButtonCount() - 1; nIndex >= 0; nIndex--)
	{
		ZeroMemory(&tb, sizeof(TBBUTTON));
		m_wndToolBar.GetToolBarCtrl().GetButton(nIndex, &tb);

		// Do we have a separator?
		if ((tb.fsStyle & TBSTYLE_SEP) ==  TBSTYLE_SEP)
			continue;

		// Have we got a valid command id?
		if (tb.idCommand == 0)
			continue;

		// Get the resource string if there is one.
		CString strText;
		LPCTSTR lpszButtonText = NULL;
		CString	strButtonText(_T(""));
		_TCHAR	seps[] = _T("\n");

		strText.LoadString(tb.idCommand);

		if (!strText.IsEmpty())
		{
			lpszButtonText = _tcstok((LPTSTR)(LPCTSTR)strText, seps);

			while(lpszButtonText)
			{
				strButtonText = lpszButtonText;
				lpszButtonText = _tcstok(NULL, seps);
			}
		}

		if (!strButtonText.IsEmpty())
			m_wndToolBar.SetButtonText(nIndex, strButtonText);
	}

	// Resize the buttons so that the text will fit.
	CRect rc(0, 0, 0, 0);
	CSize sizeMax(0, 0);

	for (nIndex = m_wndToolBar.GetToolBarCtrl().GetButtonCount() - 1; nIndex >= 0; nIndex--)
	{
		m_wndToolBar.GetToolBarCtrl().GetItemRect(nIndex, rc);

		rc.NormalizeRect();
		sizeMax.cx = __max(rc.Size().cx, sizeMax.cx);
		sizeMax.cy = __max(rc.Size().cy, sizeMax.cy);
	}
	m_wndToolBar.SetSizes(sizeMax, CSize(16,16));

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  _countof(indicators)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	// be dockable
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);

	return 0;
}
예제 #5
0
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	// create a view to occupy the client area of the frame
	if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
		CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
	{
		TRACE0("Failed to create view window\n");
		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
	}

	/////////////创建控制条///////////////
	if (!m_wndMyBar1.Create(_T("我的控制条"), this, CSize(230,260),TRUE,123))
	{
		TRACE0("Failed to create mybar\n");
			return -1;
	}
	if (!m_wndMyBar2.Create(_T("我的控制条2"), this,CSize(200,100),TRUE,124))
	{
		TRACE0("Failed to create mybar\n");
			return -1;
	}
	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_bmpBkg.LoadBitmap(IDB_TAB_BACKGROUND);
	m_TabCtrl.SetBackgroundBitmap(&m_bmpBkg);

	LoadResource();
	m_TabCtrl.SetTabBitmapSet(&m_tabBitmapSet);
	m_TabCtrl.SetBorder(2);
	m_TabCtrl.Create(TCS_UP|WS_CHILD|WS_VISIBLE,CRect(0,0,100,100),&m_wndMyBar1,125);
	/////////////这一段代码创建树型控件////////////
	if (!m_wndTree.Create(WS_CHILD|WS_VISIBLE|
		TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,
		CRect(0, 0, 0, 0), &m_TabCtrl, IDC_MYTREECTRL))
	{
		TRACE0("Failed to create instant bar child\n");
		return -1;
	}
	m_wndTree.ModifyStyleEx(0, WS_EX_CLIENTEDGE);
	///往树型控件添加内容
	HTREEITEM hti = m_wndTree.InsertItem(_T("VC知识库在线杂志"));
	m_wndTree.InsertItem(_T("电子文档"));
	m_wndTree.InsertItem(_T("在线杂志第一期"), hti);
	m_wndTree.InsertItem(_T("在线杂志第二期"), hti);
	///将树型控件加入到TabCtrl中
	m_TabCtrl.AddPage(&m_wndTree,"VC知识库",IDI_ICON1);
	m_TabCtrl.AddPage(RUNTIME_CLASS(CVCKBASEDlg),IDD_DIALOGBAR,"第二页",IDI_ICON2);
	m_TabCtrl.AddPage(RUNTIME_CLASS(CMyDlg),IDD_DIALOGBAR2,"第三页+Long Text Test",IDI_ICON3);
	m_TabCtrl.AddPage(RUNTIME_CLASS(CMyDlg),IDD_DIALOGBAR2,"Fourth Page Without Icon",0);
	m_TabCtrl.AddPage(RUNTIME_CLASS(CMyDlg),IDD_DIALOGBAR,"第5页",0);

	m_TabCtrl.UpdateWindow();
	////////对话框///////////
	//if(!m_wndVCKBASE.Create(IDD_DIALOGBAR,&m_wndMyBar1))
	//	return -1;
	//m_wndVCKBASE.ShowWindow(SW_SHOW);

	////////编辑控件///////////
	if(!m_wndEdit.Create(WS_VSCROLL|WS_CHILD|WS_VISIBLE|ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN,CRect(0,0,0,0),&m_wndMyBar2,101))
		return -1;
	m_wndEdit.ModifyStyleEx(0,WS_EX_CLIENTEDGE);
	///////////////停靠控制///////////////////
	m_wndMyBar1.SetBarStyle(m_wndMyBar1.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
	m_wndMyBar2.SetBarStyle(m_wndMyBar2.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	m_wndMyBar1.EnableDocking(CBRS_ALIGN_ANY);
	m_wndMyBar2.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);
	DockControlBar(&m_wndMyBar1, AFX_IDW_DOCKBAR_LEFT);
	DockControlBar(&m_wndMyBar2, AFX_IDW_DOCKBAR_BOTTOM);
	/////////使浮动与停靠显示相同的头部////
	#ifdef _SCB_REPLACE_MINIFRAME
    m_pFloatingFrameClass = RUNTIME_CLASS(CSCBMiniDockFrameWnd);
	#endif //_SCB_REPLACE_MINIFRAME
	return 0;
}
예제 #6
0
파일: MainFrm.cpp 프로젝트: JFreaker/exetoc
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
//	
//	if (!m_wndToolBar.Create(this) ||
//		!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
	}
	
	//pCLog = NULL;

	// TODO: Remove this if you don't want tool tips or a resizeable toolbar
//	m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
//		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
//	if (!m_buttonbar.Create(this,IDD_DIALOGBAR1,  CBRS_TOP, IDD_DIALOGBAR1))
//	{
//		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
	}
// 	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
//	EnableDocking(CBRS_ALIGN_ANY);
//	DockControlBar(&m_wndToolBar);
	if (!m_wndMyBar1.Create(_T("控制条"), this, CSize(280,100),TRUE,123))
	{
		TRACE0("Failed to create mybar\n");
			return -1;
	}
	if (!m_wndMyBar2.Create(_T("我的控制条2"), this,CSize(200,30),TRUE,124))
	{
		TRACE0("Failed to create mybar\n");
			return -1;
	}
	
	if (!m_wndLogBar3.Create(_T("输出窗口"), this,CSize(100,250),TRUE,124))
	{
		TRACE0("Failed to create mybar\n");
			return -1;
	}

	

	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	m_wndToolBar.SetButtonText(0," Optim ");
	m_wndToolBar.SetButtonText(1," Exit ");
	/////////////调整工具条/////////////////
	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,100,100),&m_wndMyBar1,125);
	/////////////这一段代码创建树型控件////////////
//	if (!m_wndTree.Create(WS_CHILD|WS_VISIBLE|
//		TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,
//		CRect(0, 0, 0, 0), &m_TabCtrl, IDC_MYTREECTRL))
//	{
//		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("2"));
//	m_wndTree.InsertItem(_T("main()"), hti);
//	m_wndTree.InsertItem(_T("aaa"), hti);
	///将树型控件加入到TabCtrl中
//	m_TabCtrl.AddPage(&m_wndTree,"函数",IDI_ICON1);
//	m_TabCtrl.AddPage(RUNTIME_CLASS(CViewFunDlg),IDD_DIALOGBAR2,"第1页",IDI_ICON1);
//	m_TabCtrl.AddPage(RUNTIME_CLASS(CViewDlg),IDD_DIALOG2,"第三页",IDI_ICON1);
//	m_TabCtrl.UpdateWindow();
	////////对话框///////////
	if(!dlg.Create(IDD_DIALOGBAR2,&m_wndMyBar1))
		return -1;
	dlg.ShowWindow(SW_SHOW);
	if(!m_commandDlg.Create(IDD_COMMAND,&m_wndMyBar2))
		return -1;
	m_commandDlg.ShowWindow(SW_SHOW);

	if(!m_log.Create(IDD_DIALOGBAR3,&m_wndLogBar3))
		return -1;	
	m_log.ShowWindow(SW_SHOW);
	

//	m_listFun.Create(
//   WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT,
//   CRect(10,10,400,200), pParentWnd, 1);

	////////编辑控件///////////
//	if(!m_wndEdit.Create(WS_VSCROLL|WS_CHILD|WS_VISIBLE|ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN,CRect(0,0,0,0),&m_wndMyBar2,101))
//		return -1;
//	m_wndEdit.ModifyStyleEx(0,WS_EX_CLIENTEDGE);
	///////////////停靠控制///////////////////
	m_wndMyBar1.SetBarStyle(m_wndMyBar1.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

	m_wndMyBar2.SetBarStyle(m_wndMyBar2.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

	m_wndLogBar3.SetBarStyle(m_wndLogBar3.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	m_wndMyBar1.EnableDocking(CBRS_ALIGN_ANY);
	m_wndMyBar2.EnableDocking(CBRS_ALIGN_ANY);
	m_wndLogBar3.EnableDocking(CBRS_ALIGN_ANY);

	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);
    

	DockControlBar(&m_wndMyBar1, AFX_IDW_DOCKBAR_RIGHT);
	RecalcLayout();

	CRect rect;
	m_wndMyBar1.GetWindowRect(rect);
	rect.OffsetRect(0,1);//偏移一个位置
	DockControlBar(&m_wndLogBar3, AFX_IDW_DOCKBAR_RIGHT,rect);///也停靠在底部


	DockControlBar(&m_wndMyBar2, AFX_IDW_DOCKBAR_BOTTOM);
		

	/////////使浮动与停靠显示相同的头部////
	#ifdef _SCB_REPLACE_MINIFRAME
    m_pFloatingFrameClass = RUNTIME_CLASS(CSCBMiniDockFrameWnd);
	#endif //_SCB_REPLACE_MINIFRAME
//	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
//	EnableDocking(CBRS_ALIGN_ANY);
//	DockControlBar(&m_wndToolBar);


	//::SendMessage(m_log.GetSafeHwnd(),WM_LBUTTONDOWN,0x1,0x31FFF8);
	//::SendMessage(m_log.GetSafeHwnd(),WM_MOUSEMOVE,0x1,0xD6003F);
	//::SendMessage(m_log.GetSafeHwnd(),WM_LBUTTONUP,0x0,0xD6003F);
	

	return 0;
}