windows-nt/Source/XPSP1/NT/printscan/fax/samples/faxapi/mainfrm.cpp
2020-09-26 16:20:57 +08:00

175 lines
5.2 KiB
C++

// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "FaxApi.h"
#include "MainFrm.h"
#include "fcnselvw.h"
#include "paramvw.h"
#include "fcninfvw.h"
#include "rvoutvw.h"
#include "exelogvw.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CFaxApiApp * pFaxApiBrowserApp;
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CLOSE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
}
CMainFrame::~CMainFrame()
{
}
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT lpcs,
CCreateContext* pContext)
{
BOOL fReturnValue;
// Note: The main frame window for the FaxApi browser is overlaid with
// a splitter window in which two additional splitter windows are
// nested. The top level splitter window consists of one row and
// three columns. The first column of the top level splitter window
// contains the list of Fax API functions. The second column, in
// which an additional splitter window is nested, is used to display
// information about the Fax API function that is selected in the
// function list. The third column of the top level splitter window
// also contains a nested splitter window, and is used to display
// "output" generated by the execution of the selected Fax API function.
// Create the top level splitter window.
fReturnValue = m_wndSplitterMainFrame.CreateStatic( this, 1, 3 );
if ( fReturnValue != (BOOL) FALSE )
{
// Create the view that manages the list of Fax API functions.
m_wndSplitterMainFrame.CreateView( 0, 0, RUNTIME_CLASS( CFaxApiFunctionSelectionFormView ),
CSize( 205, 320 ), pContext );
// Add the second splitter window - which is a nested splitter -
// in column 1 of m_wndSplitterMainFrame. This is the "info pane".
if (!m_wndSplitterInfoPane.CreateStatic(
&m_wndSplitterMainFrame, // our parent window is the first splitter
2, 1, // the new splitter is 2 rows, 1 column
WS_CHILD | WS_VISIBLE | WS_BORDER, // style, WS_BORDER is needed
m_wndSplitterMainFrame.IdFromRowCol(0, 1) ) )
{
TRACE0("Failed to create nested splitter for Info pane.\n");
return FALSE;
}
// Set the initial width of the second column in m_wndSplitterMainFrame.
// (determined experimentally)
m_wndSplitterMainFrame.SetColumnInfo( 1, 320, 25 );
// Create the two views which display information about the
// selected Fax API function inside the nested splitter
// Create the Function Info view.
if (!m_wndSplitterInfoPane.CreateView(0, 0,
RUNTIME_CLASS(CFunctionInfoFormView), CSize(320, 195), pContext))
{
TRACE0("Failed to create function prototype view in nested splitter\n");
return FALSE;
}
// Create the view that handles information pertaining to the parameter
// list for the selected Fax API function.
if (!m_wndSplitterInfoPane.CreateView(1, 0,
RUNTIME_CLASS(CParameterInfoFormView), CSize(320, 300), pContext))
{
TRACE0("Failed to create return value description view.\n");
return FALSE;
}
// Create the third splitter, nested in the third column of the top
// level splitter. The third column of the top level splitter is the
// "output pane".
if (!m_wndSplitterOutputPane.CreateStatic(
&m_wndSplitterMainFrame, // our parent window is the first splitter
2, 1, // the new splitter is 2 rows, 1 column
WS_CHILD | WS_VISIBLE | WS_BORDER, // style, WS_BORDER is needed
m_wndSplitterMainFrame.IdFromRowCol(0, 2) ) )
{
TRACE0("Failed to create nested splitter for Output pane.\n");
return FALSE;
}
// Create the Return Value Output view in the "output pane".
m_wndSplitterOutputPane.CreateView( 0, 0,
RUNTIME_CLASS( CReturnValueOutputFormView ), CSize( 205, 90 ), pContext );
m_wndSplitterOutputPane.CreateView( 1, 0,
RUNTIME_CLASS( CExecutionLogFormView ), CSize( 205, 40 ), pContext );
}
return ( fReturnValue );
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFrameWnd::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// 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::OnClose()
{
pFaxApiBrowserApp->DeleteCFaxApiFunctionInfoObjects();
CFrameWnd::OnClose();
}