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

286 lines
7.4 KiB
C++

// exelogvw.cpp : implementation file
//
#include "stdafx.h"
#include "FaxApi.h"
#include "exelogvw.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CFaxApiApp * pFaxApiBrowserApp;
/////////////////////////////////////////////////////////////////////////////
// CExecutionLogFormView
IMPLEMENT_DYNCREATE(CExecutionLogFormView, CFormView)
CExecutionLogFormView::CExecutionLogFormView()
: CFormView(CExecutionLogFormView::IDD)
{
//{{AFX_DATA_INIT(CExecutionLogFormView)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CExecutionLogFormView::~CExecutionLogFormView()
{
}
void CExecutionLogFormView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CExecutionLogFormView)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CExecutionLogFormView, CFormView)
//{{AFX_MSG_MAP(CExecutionLogFormView)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CExecutionLogFormView diagnostics
#ifdef _DEBUG
void CExecutionLogFormView::AssertValid() const
{
CFormView::AssertValid();
}
void CExecutionLogFormView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CExecutionLogFormView message handlers
BOOL CExecutionLogFormView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
BOOL fReturnValue;
fReturnValue = CFormView::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
if ( fReturnValue != (BOOL) FALSE )
{
// Save the handle to this view in the CFaxApiApp object.
pFaxApiBrowserApp->StoreExecutionLogFormViewHWND( m_hWnd );
}
return ( fReturnValue );
}
BOOL CExecutionLogFormView::UpdateExecutionLogEditCtrl( CString & rcsExecutionLogString )
{
BOOL fReturnValue;
// Get a pointer to the Execution Log edit control.
CEdit * pceExecutionLogEditCtrl;
pceExecutionLogEditCtrl = (CEdit *) ((CDialog *) this)->
GetDlgItem( IDC_EDIT_EXECUTION_LOG );
// Is the pointer valid ?
if ( pceExecutionLogEditCtrl != (CEdit *) NULL )
{
pceExecutionLogEditCtrl->SetWindowText( rcsExecutionLogString );
}
else
{
fReturnValue = (BOOL) FALSE;
}
return ( fReturnValue );
}
/*
* UpdateExecutionLogBeforeApiCall
*
* Purpose:
* This function writes a block of text to the execution log edit control
* in preparation for executing the selected Fax Api function.
*
* Arguments:
* pcfafiFunctionInfo - points to the CFaxApiFunctionInfo object for
* the selected Fax Api function.
*
* Returns:
* none
*
*/
void CExecutionLogFormView::UpdateExecutionLogBeforeApiCall( CFaxApiFunctionInfo * pcfafiFunctionInfo )
{
/* Get a pointer to the Output edit control. */
CEdit * pceEditControl;
pceEditControl = (CEdit *) ((CDialog *) this)->GetDlgItem( IDC_EDIT_EXECUTION_LOG );
if ( pceEditControl != (CEdit *) NULL )
{
CString csFunctionName;
CString csText;
csFunctionName = pcfafiFunctionInfo->GetFunctionName();
csText.Format( TEXT("\r\nCalling %s\r\n"), csFunctionName );
AddTextToEditControl( pceEditControl, (const CString &) csText );
int xNumberOfParameters;
xNumberOfParameters = pcfafiFunctionInfo->GetNumberOfParameters();
if ( xNumberOfParameters > 0 )
{
int xParameterIndex;
CString csParameterName;
CString csParameterValue;
for ( xParameterIndex = 0; xParameterIndex < xNumberOfParameters; xParameterIndex++ )
{
pcfafiFunctionInfo->GetParameterName( xParameterIndex,
(CString &) csParameterName );
pcfafiFunctionInfo->FormatParameterValueForOutput( xParameterIndex,
(CString &) csParameterValue );
csText.Format( TEXT(" %s = \t%s\r\n"), csParameterName, csParameterValue );
AddTextToEditControl( pceEditControl, (const CString &) csText );
}
}
}
}
/*
* UpdateExecutionLogAfterApiReturn
*
* Purpose:
* This function writes a block of text to the output exit control
* after execution of the selected Fax Api function.
*
* Arguments:
* pcfafiFunctionInfo - points to the CFaxApiFunctionInfo object for
* the selected Fax Api function.
*
* Returns:
* none
*
*/
void CExecutionLogFormView::UpdateExecutionLogAfterApiReturn( CFaxApiFunctionInfo * pcfafiFunctionInfo )
{
/* Get a pointer to the Execution Log edit control. */
CEdit * pceEditControl;
pceEditControl = (CEdit *) ((CDialog *) this)->GetDlgItem( IDC_EDIT_EXECUTION_LOG );
if ( pceEditControl != (CEdit *) NULL )
{
CString csFunctionName;
CString csText;
csFunctionName = pcfafiFunctionInfo->GetFunctionName();
csText.Format( TEXT("\r\n%s returned:\r\n"), csFunctionName );
AddTextToEditControl( pceEditControl, (const CString &) csText );
CString csReturnValue;
pcfafiFunctionInfo->FormatReturnValueForOutput( (CString &) csReturnValue );
csText.Format( TEXT(" %s\r\n"), csReturnValue );
AddTextToEditControl( pceEditControl, (const CString &) csText );
int xNumberOfParameters;
xNumberOfParameters = pcfafiFunctionInfo->GetNumberOfParameters();
if ( xNumberOfParameters > 0 )
{
int xParameterIndex;
CString csParameterName;
CString csParameterValue;
for ( xParameterIndex = 0; xParameterIndex < xNumberOfParameters; xParameterIndex++ )
{
pcfafiFunctionInfo->GetParameterName( xParameterIndex,
(CString &) csParameterName );
pcfafiFunctionInfo->FormatParameterValueForOutput( xParameterIndex,
(CString &) csParameterValue );
csText.Format( TEXT(" %s = \t%s\r\n"), csParameterName, csParameterValue );
AddTextToEditControl( pceEditControl, (const CString &) csText );
}
}
}
}
/*
* AddTextToEditControl
*
* Purpose:
* This function adds text to an edit control.
*
* Arguments:
* pceEditControl - points to the CEdit object
* rcsText - a reference to CString that contains the text
* to be added to the edit control.
*
* may want to add num chars parameter later !
*
* Returns:
* None
*
*/
void CExecutionLogFormView::AddTextToEditControl( CEdit * pceEditControl, const CString & rcsText )
{
if ( pceEditControl != (CEdit *) NULL )
{
/* Set the insertion point at the end of the text. */
pceEditControl->SetSel( -1, 50000 ); // 50000 is arbitrary !
/* Turn off READ ONLY. */
pceEditControl->SetReadOnly( (BOOL) FALSE );
/* Write the string to the edit control. */
pceEditControl->ReplaceSel( (LPCTSTR) rcsText );
/* Turn on READ ONLY. */
pceEditControl->SetReadOnly( (BOOL) TRUE );
}
}