windows-nt/Source/XPSP1/NT/net/config/tools/ncbrowse/splitterview.cpp
2020-09-26 16:20:57 +08:00

116 lines
2.7 KiB
C++

// SplitterView.cpp : implementation file
//
#include "stdafx.h"
#include "ncbrowse.h"
#include "SplitterView.h"
#include "ncbrowsedoc.h"
#include "NcbrowseView.h"
#include "LeftView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSplitterView
IMPLEMENT_DYNCREATE(CSplitterView, CView)
CSplitterView::CSplitterView()
{
m_bInitialized = FALSE;
m_bShouldSetXColumn = TRUE;
}
CSplitterView::~CSplitterView()
{
}
BEGIN_MESSAGE_MAP(CSplitterView, CView)
//{{AFX_MSG_MAP(CSplitterView)
ON_WM_CREATE()
ON_WM_SIZE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSplitterView drawing
void CSplitterView::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
// TODO: add draw code here
}
/////////////////////////////////////////////////////////////////////////////
// CSplitterView diagnostics
#ifdef _DEBUG
void CSplitterView::AssertValid() const
{
CView::AssertValid();
}
void CSplitterView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CSplitterView message handlers
int CSplitterView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
CCreateContext* pContext = (CCreateContext*)lpCreateStruct->lpCreateParams;
lpCreateStruct->style |= WS_OVERLAPPED;
if (!m_wndSplitterLR.CreateStatic(this, 1, 2))
return -1;
if (!m_wndSplitterLR.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(225, 100), pContext) ||
!m_wndSplitterLR.CreateView(0, 1, RUNTIME_CLASS(CNcbrowseView), CSize(225, 100), pContext))
{
m_wndSplitterLR.DestroyWindow();
return -1;
}
return 0;
}
void CSplitterView::OnInitialUpdate()
{
CView::OnInitialUpdate();
//Because of the structure of this app, this function can be called more than once.
//The following flag insures the code after is only run once:
if(m_bInitialized)
return;
m_bInitialized = true;
}
void CSplitterView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
m_wndSplitterLR.MoveWindow(0, 0, cx, cy);
//We just want to set the X column upon creation of the view. This way the user can
//move the splitter bar to how they like it and still resize the frame window
//without it snapping back:
if (m_bShouldSetXColumn)
{
m_wndSplitterLR.SetColumnInfo(0, cx/3, 0);
m_bShouldSetXColumn = FALSE;
}
m_wndSplitterLR.RecalcLayout();
}