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