windows-nt/Source/XPSP1/NT/base/win32/fusion/appweek/host/childfrm.cpp
2020-09-26 16:20:57 +08:00

261 lines
6.2 KiB
C++

// ChildFrm.cpp : implementation of the CChildFrame class
//
#include "stdinc.h"
#include "host.h"
#include "ChildFrm.h"
#include "HostDoc.h"
#include "SettingsDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CChildFrame
IMPLEMENT_DYNCREATE(CChildFrame, CMDIChildWnd)
BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)
//{{AFX_MSG_MAP(CChildFrame)
ON_COMMAND(ID_SETTINGS, OnSettings)
ON_COMMAND(ID_DATASOURCE1, OnDataSource1)
ON_COMMAND(ID_DATASOURCE2, OnDataSource2)
ON_COMMAND(ID_DATASOURCE3, OnDataSource3)
ON_UPDATE_COMMAND_UI(ID_DATASOURCE1, OnUpdateDataSource1)
ON_UPDATE_COMMAND_UI(ID_DATASOURCE2, OnUpdateDataSource2)
ON_UPDATE_COMMAND_UI(ID_DATASOURCE3, OnUpdateDataSource3)
ON_COMMAND(ID_GDIPLUS, OnGdiPlus)
ON_UPDATE_COMMAND_UI(ID_GDIPLUS, OnUpdateGdiPlus)
ON_COMMAND(ID_COMCTRL, OnComCtrl)
ON_UPDATE_COMMAND_UI(ID_COMCTRL, OnUpdateComCtrl)
ON_COMMAND(ID_PRIVATE_ASSEMBLY, OnPrivateAssembly)
ON_UPDATE_COMMAND_UI(ID_PRIVATE_ASSEMBLY, OnUpdatePrivateAssembly)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CChildFrame construction/destruction
CChildFrame::CChildFrame()
{
m_nDataSource = 0;
m_nUIObject = 0;
}
CChildFrame::~CChildFrame()
{
}
BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
if( !CMDIChildWnd::PreCreateWindow(cs) )
return FALSE;
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CChildFrame diagnostics
#ifdef _DEBUG
void CChildFrame::AssertValid() const
{
CMDIChildWnd::AssertValid();
}
void CChildFrame::Dump(CDumpContext& dc) const
{
CMDIChildWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CChildFrame message handlers
void CChildFrame::OnSettings()
{
CHostDoc * pDoc = (CHostDoc *) GetActiveDocument();
// TODO: Add your command handler code here
CSettingsDlg dlg;
dlg.m_sPath = pDoc->m_sPath;
dlg.m_sDBName = pDoc->m_sDBName;
dlg.m_sDBQuery = pDoc->m_sDBQuery;
if (dlg.DoModal() == IDOK)
{
pDoc->m_sPath = dlg.m_sPath;
pDoc->m_sDBName = dlg.m_sDBName;
pDoc->m_sDBQuery = dlg.m_sDBQuery;
}
}
///////////////////////////////////////////////////////////////////////////
void CChildFrame::OnDataSource1()
{
m_nDataSource = 1;
Action();
}
///////////////////////////////////////////////////////////////////////////
void CChildFrame::OnDataSource2()
{
m_nDataSource = 2;
Action();
}
///////////////////////////////////////////////////////////////////////////
void CChildFrame::OnDataSource3()
{
m_nDataSource = 3;
Action();
}
///////////////////////////////////////////////////////////////////////////
void CChildFrame::OnGdiPlus()
{
m_nUIObject = 1;
Action();
}
///////////////////////////////////////////////////////////////////////////
void CChildFrame::OnComCtrl()
{
m_nUIObject = 2;
Action();
}
///////////////////////////////////////////////////////////////////////////
void CChildFrame::OnPrivateAssembly()
{
m_nUIObject = 3;
Action();
}
///////////////////////////////////////////////////////////////////////////
void CChildFrame::OnUpdateDataSource1(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck( FALSE );
CHostDoc * pDoc = (CHostDoc *) GetActiveDocument();
BOOL bShow = (pDoc->m_sPath.GetLength() > 0);
pCmdUI->Enable( bShow );
if ( bShow )
{
pCmdUI->SetCheck(m_nDataSource == 1);
}
}
///////////////////////////////////////////////////////////////////////////
void CChildFrame::OnUpdateDataSource2(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck( FALSE );
CHostDoc * pDoc = (CHostDoc *) GetActiveDocument();
BOOL bShow = ((pDoc->m_sDBName.GetLength() > 0) && (pDoc->m_sDBQuery.GetLength() > 0));
pCmdUI->Enable( bShow );
if ( bShow )
{
pCmdUI->SetCheck(m_nDataSource == 2);
}
}
///////////////////////////////////////////////////////////////////////////
void CChildFrame::OnUpdateDataSource3(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck( FALSE );
pCmdUI->Enable( FALSE );
// pCmdUI->SetCheck(m_nDataSource == 3);
}
///////////////////////////////////////////////////////////////////////////
void CChildFrame::OnUpdateGdiPlus(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck( FALSE );
CHostDoc * pDoc = (CHostDoc *) GetActiveDocument();
BOOL bShow = ((pDoc->m_sPath.GetLength() > 0)
|| ((pDoc->m_sDBName.GetLength() > 0) && (pDoc->m_sDBQuery.GetLength() > 0)));
pCmdUI->Enable( bShow );
if ( bShow)
{
pCmdUI->SetCheck(m_nUIObject == 1);
}
}
///////////////////////////////////////////////////////////////////////////
void CChildFrame::OnUpdateComCtrl(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck( FALSE );
CHostDoc * pDoc = (CHostDoc *) GetActiveDocument();
BOOL bShow = ((pDoc->m_sPath.GetLength() > 0)
|| ((pDoc->m_sDBName.GetLength() > 0) && (pDoc->m_sDBQuery.GetLength() > 0)));
pCmdUI->Enable( bShow );
if ( bShow)
{
pCmdUI->SetCheck(m_nUIObject == 2);
}
}
///////////////////////////////////////////////////////////////////////////
void CChildFrame::OnUpdatePrivateAssembly(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck( FALSE );
CHostDoc * pDoc = (CHostDoc *) GetActiveDocument();
BOOL bShow = ((pDoc->m_sPath.GetLength() > 0)
|| ((pDoc->m_sDBName.GetLength() > 0) && (pDoc->m_sDBQuery.GetLength() > 0)));
pCmdUI->Enable( bShow );
if ( bShow)
{
pCmdUI->SetCheck(m_nUIObject == 3);
}
}
///////////////////////////////////////////////////////////////////////////
void CChildFrame::Action()
{
CString sQuery;
sQuery.Empty();
// Get Application and current document pointers
CHostApp * pApp = (CHostApp *) AfxGetApp();
CHostDoc * pDoc = (CHostDoc *) GetActiveDocument();
switch ( m_nDataSource )
{
case 1:
sQuery = pDoc->m_sPath;
break;
case 2:
sQuery.Format(L"%s;|%s", pDoc->m_sDBName, pDoc->m_sDBQuery);
break;
case 3:
break;
default:
sQuery = pDoc->m_sPath;
break;
}
pApp->m_host.DSQuery(m_nDataSource, m_nUIObject, sQuery, this->GetSafeHwnd());
}