// fcnvw.cpp : implementation file // #include "stdafx.h" #include "FaxApi.h" #include "fcnselvw.h" #include "fcninfvw.h" #include "exelogvw.h" #include "rvoutvw.h" #include "paramvw.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif extern CFaxApiApp * pFaxApiBrowserApp; ///////////////////////////////////////////////////////////////////////////// // CFaxApiFunctionSelectionFormView IMPLEMENT_DYNCREATE(CFaxApiFunctionSelectionFormView, CFormView) CFaxApiFunctionSelectionFormView::CFaxApiFunctionSelectionFormView() : CFormView(CFaxApiFunctionSelectionFormView::IDD) { //{{AFX_DATA_INIT(CFaxApiFunctionSelectionFormView) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } CFaxApiFunctionSelectionFormView::~CFaxApiFunctionSelectionFormView() { } void CFaxApiFunctionSelectionFormView::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(CFaxApiFunctionSelectionFormView) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CFaxApiFunctionSelectionFormView, CFormView) //{{AFX_MSG_MAP(CFaxApiFunctionSelectionFormView) ON_LBN_DBLCLK(IDC_LISTBOX_FAX_API_FUNCTIONS, OnDblclkListboxFaxApiFunctions) ON_LBN_SELCHANGE(IDC_LISTBOX_FAX_API_FUNCTIONS, OnSelchangeListboxFaxApiFunctions) ON_BN_CLICKED(IDC_BUTTON_EXECUTE_API_FUNCTION, OnButtonExecuteApiFunction) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CFaxApiFunctionSelectionFormView diagnostics #ifdef _DEBUG void CFaxApiFunctionSelectionFormView::AssertValid() const { CFormView::AssertValid(); } void CFaxApiFunctionSelectionFormView::Dump(CDumpContext& dc) const { CFormView::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CFaxApiFunctionSelectionFormView message handlers BOOL CFaxApiFunctionSelectionFormView::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->StoreFaxApiFunctionSelectionFormViewHWND( m_hWnd ); int xItemIndex; int xNumApiFunctions; // Get a pointer to the Fax Api Function list. CString csFunctionName; CListBox * pclbFaxApiFunctionList; pclbFaxApiFunctionList = (CListBox *) ( (CDialog *) this)-> GetDlgItem( IDC_LISTBOX_FAX_API_FUNCTIONS ); // Is the pointer valid ? if ( pclbFaxApiFunctionList != (CListBox *) NULL ) { /* Empty the listbox. */ pclbFaxApiFunctionList->ResetContent(); int xRV; xNumApiFunctions = pFaxApiBrowserApp->GetNumberOfFaxApiFunctions(); if ( xNumApiFunctions > 0 ) { CFaxApiFunctionInfo * pcfafiFunctionInfo; for ( xItemIndex = 0; xItemIndex < xNumApiFunctions; xItemIndex++ ) { pcfafiFunctionInfo = pFaxApiBrowserApp->GetFaxApiFunctionInfoPointer( xItemIndex ); csFunctionName = pcfafiFunctionInfo->GetFunctionName(); xRV = pclbFaxApiFunctionList->InsertString( xItemIndex, (LPCTSTR) csFunctionName ); if ( (xRV == LB_ERR) || (xRV == LB_ERRSPACE) ) { fReturnValue = (BOOL) FALSE; break; // terminate the loop on error ! } } // end of for loop } /* Disable the "Execute API Function" button. A selection must be made */ /* before the Execute Fax API function button gets enabled. */ DisableExecuteButton(); fReturnValue = (BOOL) TRUE; } else { fReturnValue = (BOOL) FALSE; } } return ( fReturnValue ); } /* * OnSelchangeListboxFaxApiFunctions * * Purpose: * This function handles the LBN_SELCHANGE messages from the * Fax API function listbox. * * Arguments: * None * * Returns: * None * */ void CFaxApiFunctionSelectionFormView::OnSelchangeListboxFaxApiFunctions() { // Get a pointer to the Fax API Function Information object. CFaxApiFunctionInfo * pcfafiFunctionInfo; pcfafiFunctionInfo = GetSelectedFaxApiFunctionInfoPointer(); // Is the pointer to the Fax API Function Info object valid ? if ( pcfafiFunctionInfo != (CFaxApiFunctionInfo *) NULL ) { /*************************************/ /* Update the controls on this view. */ /*************************************/ // Get the name of the selected Fax API function. CString csFaxApiFunctionName; csFaxApiFunctionName = pcfafiFunctionInfo->GetFunctionName(); // Update the text of the "execute" button. Start by getting a // pointer to the button. CWnd * pcwndExecuteButton; pcwndExecuteButton = ((CDialog *) this)-> GetDlgItem( IDC_BUTTON_EXECUTE_API_FUNCTION ); // Is the pointer valid ? if ( pcwndExecuteButton != (CWnd *) NULL ) { /* Enable the "Execute API Function" button. */ pcwndExecuteButton->EnableWindow( (BOOL) TRUE ); /* Update the text on the button face. */ CString csButtonFace; // Note: this needs to be smart enough to determine whether the // string created by the following statement will fit on // the button face. Call GetTextMetrics csButtonFace.Format( TEXT("Execute %s"), csFaxApiFunctionName ); pcwndExecuteButton->SetWindowText( csButtonFace ); } // Update the Remarks edit control. Start by getting a pointer to // the Remarks edit control. CEdit * pceRemarksEditCtrl; pceRemarksEditCtrl = (CEdit *) ((CDialog *) this)->GetDlgItem( IDC_EDIT_REMARKS ); // Is the pointer valid ? if ( pceRemarksEditCtrl != (CEdit *) NULL ) { // Update the Remarks edit control. CString csRemarks; csRemarks = pcfafiFunctionInfo->GetRemarks(); pceRemarksEditCtrl->SetWindowText( csRemarks ); } /***************************/ /* Update the other views. */ /***************************/ // Update the CFunctionInfoFormView. CFunctionInfoFormView * pcFunctionInfoFormView; // Get a pointer to the CFunctionInfoFormView object. pcFunctionInfoFormView = (CFunctionInfoFormView *) pFaxApiBrowserApp-> GetFunctionInfoFormViewPointer(); // Is the pointer valid ? if ( pcFunctionInfoFormView != (CFunctionInfoFormView *) NULL ) { // Update the Function Prototype edit control. CString csFaxApiFunctionPrototype; csFaxApiFunctionPrototype = pcfafiFunctionInfo->GetFunctionPrototype(); pcFunctionInfoFormView-> UpdateFunctionPrototypeEditCtrl( (CString &) csFaxApiFunctionPrototype ); // Update the Return Value Description edit control. CString csReturnValueDescription; csReturnValueDescription = pcfafiFunctionInfo->GetReturnValueDescription(); pcFunctionInfoFormView-> UpdateReturnValueDescriptionEditCtrl( (CString &) csReturnValueDescription ); } // Update the CParameterInfoFormView. CParameterInfoFormView * pcParameterInfoFormView; // Get a pointer to the CParameterInfoFormView object. pcParameterInfoFormView = (CParameterInfoFormView *) pFaxApiBrowserApp-> GetParameterInfoFormViewPointer(); // Is the pointer valid ? if ( pcParameterInfoFormView != (CParameterInfoFormView *) NULL ) { // Update the Parameter List. pcParameterInfoFormView->UpdateParameterListbox( pcfafiFunctionInfo ); // Clear the remainder of the CParameterInfoFormView because // unless the same Fax Api function has been reselected in the list, // no parameter can be selected. // Note: this does NOT clear the parameter list ! pcParameterInfoFormView->ClearParameterEditControlFamily(); } // Clear the Return Value Output view because selection of a Fax API // function in this view means that whatever is in the Return Value Output // Form View is invalid. CReturnValueOutputFormView * pcReturnValueOutputFormView; // Get a pointer to the CReturnValueOutputFormView object. pcReturnValueOutputFormView = (CReturnValueOutputFormView *) pFaxApiBrowserApp-> GetReturnValueOutputFormViewPointer(); // Is the pointer valid ? if ( pcReturnValueOutputFormView != (CReturnValueOutputFormView *) NULL ) { pcReturnValueOutputFormView->ClearReturnValueOutputEditCtrl(); } } else { /* Disable the "Execute API Function" button. */ DisableExecuteButton(); } } /* * DisableExecuteButton * * Purpose: * This function disables the Execute Fax API function button. * * Arguments: * None * * Returns: * TRUE - indicates that the button was disabled succesfully. * FALSE - indicates that some error occured. * */ BOOL CFaxApiFunctionSelectionFormView::DisableExecuteButton( void ) { BOOL fReturnValue; // Get a pointer to the Execute Fax API function button. CWnd * pcwndExecuteButton; pcwndExecuteButton = ((CDialog *) this)-> GetDlgItem( IDC_BUTTON_EXECUTE_API_FUNCTION ); // Is the pointer valid ? if ( pcwndExecuteButton != (CWnd *) NULL ) { /* Update the text on the button face. */ CString csButtonFace; csButtonFace = (CString) TEXT("Execute Fax API Function"); pcwndExecuteButton->SetWindowText( csButtonFace ); /* Disable the "Execute API Function" button. */ pcwndExecuteButton->EnableWindow( (BOOL) FALSE ); fReturnValue = (BOOL) TRUE; } else fReturnValue = (BOOL) FALSE; return ( fReturnValue ); } void CFaxApiFunctionSelectionFormView::OnDblclkListboxFaxApiFunctions() { ExecuteFaxApiFunction(); } void CFaxApiFunctionSelectionFormView::OnButtonExecuteApiFunction() { ExecuteFaxApiFunction(); } BOOL CFaxApiFunctionSelectionFormView::ExecuteFaxApiFunction( void ) { BOOL fReturnValue; // Get a pointer to the seleted CFaxApiFunctionInfo object. CFaxApiFunctionInfo * pcfafiFunctionInfo; pcfafiFunctionInfo = GetSelectedFaxApiFunctionInfoPointer(); // Is the pointer to the Fax API Function Info object valid ? if ( pcfafiFunctionInfo != (CFaxApiFunctionInfo *) NULL ) { /* Update the Output Log view prior to executing the API function. */ // Get a pointer to the CExecutionLogFormView object. CExecutionLogFormView * pcExecutionLogFormView; pcExecutionLogFormView = (CExecutionLogFormView *) pFaxApiBrowserApp-> GetExecutionLogFormViewPointer(); // Is the pointer to the CExecutionLogFormView object valid ? if ( pcExecutionLogFormView != (CExecutionLogFormView *) NULL ) { pcExecutionLogFormView->UpdateExecutionLogBeforeApiCall( pcfafiFunctionInfo ); /*******************************************/ /* EXECUTE THE SELECTED FAX API FUNCTION ! */ /*******************************************/ //#ifdef TEST pcfafiFunctionInfo->Execute(); //#endif // TEST /* Update the Return Value Output view. */ // Get a pointer to the CReturnValueOutputFormView object. CReturnValueOutputFormView * pcReturnValueOutputFormView; pcReturnValueOutputFormView = (CReturnValueOutputFormView *) pFaxApiBrowserApp-> GetReturnValueOutputFormViewPointer(); // Is the pointer valid ? if ( pcReturnValueOutputFormView != (CReturnValueOutputFormView *) NULL ) { CString csReturnValue; CString csText; pcfafiFunctionInfo->FormatReturnValueForOutput( (CString &) csReturnValue ); csText.Format( TEXT("%s"), csReturnValue ); pcReturnValueOutputFormView-> UpdateReturnValueOutputEditCtrl( (CString &) csText ); /* Update the Output Log view with the results of having */ /* called the Fax API function. */ pcExecutionLogFormView-> UpdateExecutionLogAfterApiReturn( pcfafiFunctionInfo ); } else { // Couldn't get a pointer to the CReturnValueOutputFormView object. fReturnValue = (BOOL) FALSE; } } else { // Couldn't get a pointer to the CExecutionLogFormView object. fReturnValue = (BOOL) FALSE; } } else { // Couldn't get a pointer to the CFaxApiFunctionInfo object for the // selected Fax API function. fReturnValue = (BOOL) FALSE; } return ( fReturnValue ); } void CFaxApiFunctionSelectionFormView::OnInitialUpdate() { CFormView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class } /* * GetSelectedFaxApiFunctionInfoPointer * * Purpose: * This function returns a pointer to the CFaxApiFunctionInfo object * that corresponds to the Fax API function that is selected in the * Fax API function listbox. * * Arguments: * None * * Returns: * A pointer to the CFaxApiFunctionInfo object that corresponds to * the current selection in the Fax API function listbox. * * If no function is selected in the listbox or any other error * occurs, this function returns (CFaxApiFunctionInfo) NULL. * */ CFaxApiFunctionInfo * CFaxApiFunctionSelectionFormView::GetSelectedFaxApiFunctionInfoPointer() { CFaxApiFunctionInfo * pcfafiFunctionInfo; // Get a pointer to the Fax API function listbox. CListBox * pclbFaxApiFunctionList; pclbFaxApiFunctionList = (CListBox *) ((CDialog *) this)-> GetDlgItem( IDC_LISTBOX_FAX_API_FUNCTIONS ); // Is the pointer to the listbox valid ? if ( pclbFaxApiFunctionList != (CListBox *) NULL ) { int xItemIndex; xItemIndex = pclbFaxApiFunctionList->GetCurSel(); /* Is the item index valid */ if ( xItemIndex != (int) LB_ERR ) { // Get a pointer to the Fax API Function Information object. pcfafiFunctionInfo = pFaxApiBrowserApp->GetFaxApiFunctionInfoPointer( xItemIndex ); } else { pcfafiFunctionInfo = (CFaxApiFunctionInfo *) NULL; } } else { pcfafiFunctionInfo = (CFaxApiFunctionInfo *) NULL; } return ( pcfafiFunctionInfo ); }