reman3/Rayman_X/cpa/Appli/Max23Dos/Win_M23D/src/GraphInter.cpp

230 lines
6.9 KiB
C++

/*=========================================================================
*
* GraphInter.cpp - main implementation file for the graphic interface
*
* Version 1.0
* Revision date
*
*=======================================================================*/
#include "stdafx.h"
#include "GraphInter.h"
#include "print.h"
#include "DlgMain.h"
#include "IniData.h"
#include "Help.h"
//--- Global statics --------------------------------------------------------
// The one and only CGraphInterApp object
CGraphInterApp theApp;
// CGraphInterApp initialization
CRichEditCtrl* p_oRichEditRes;
CHARFORMAT* p_stCharFormatRes;
CRichEditCtrl* p_oRichEditCom;
CHARFORMAT* p_stCharFormatCom;
CWinThread* p_ThMain;
//--------------------------------------------------------------------
/****************************************************************************
* Description: message map
*
* Parameters:
*---------------------------------------------------------------------------
* Revision date: Author:
*****************************************************************************/
BEGIN_MESSAGE_MAP(CGraphInterApp, CWinApp)
//{{AFX_MSG_MAP(CGraphInterApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/****************************************************************************
* Description: constructor
*
* Parameters:
*---------------------------------------------------------------------------
* Revision date: Author:
*****************************************************************************/
CGraphInterApp::CGraphInterApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/****************************************************************************
* Description: init the application instance
*
* Parameters:
*---------------------------------------------------------------------------
* Revision date: Author:
*****************************************************************************/
BOOL CGraphInterApp::InitInstance()
{
char szHelpFile[256];
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
// compute the name of the context help file
GetCurrentDirectory(256, szHelpFile);
strcat(szHelpFile, "\\");
strcat(szHelpFile, C_szCxtHelpFile);
// update the current context help file
fn_vChangeContextHelpFile(szHelpFile);
// create the dialog for the application
CDlgMain dlg;
m_pMainWnd = &dlg;
p_oRichEditCom = &dlg.m_oRichEditCom;
p_stCharFormatCom = &dlg.m_stCharFormatCom;
p_oRichEditRes = &dlg.m_oRichEditRes;
p_stCharFormatRes = &dlg.m_stCharFormatRes;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
/****************************************************************************
* Description: update the name of the context help file
*
* Parameters: _szString : string to display
* _Line : type of the line (normal, warning, error)
*---------------------------------------------------------------------------
* Revision date: Author:
*****************************************************************************/
void CGraphInterApp::fn_vChangeContextHelpFile (char *szNewName)
{
free((void*)m_pszHelpFilePath);
m_pszHelpFilePath=_tcsdup(_T(szNewName));
}
/****************************************************************************
* Description: display a string in the result window
*
* Parameters: _szString : string to display
* _Line : type of the line (normal, warning, error)
*---------------------------------------------------------------------------
* Revision date: Author:
*****************************************************************************/
void fn_vAfxOutputStringRes( char* _szString, char _Line)
{
fn_ComRes_vWriteLine( _szString, _Line ,p_oRichEditRes, p_stCharFormatRes);
}
/****************************************************************************
* Description: display a string in the command window
*
* Parameters: _szString : string to display
* _Line : type of the line (normal, warning, error)
*---------------------------------------------------------------------------
* Revision date: Author:
*****************************************************************************/
void fn_vAfxOutputStringCom( char* _szString, char _Line)
{
char szSingleLine[256];
char *p_szNextCom, *p_szCurrentCom;
char *p_szNextLine, *p_szCurrentLine;
BOOL bTitle, bLastLine, bLastCom = FALSE;
int iLineIndex = 0, iCommandIndex = 0;
p_szCurrentCom = _szString;
while (p_szCurrentCom)
{
// update pointers
p_szNextCom = strstr(p_szCurrentCom+2, "##");
p_szCurrentLine = p_szCurrentCom+2;
// update flags
bTitle = TRUE;
bLastCom = (p_szNextCom == NULL);
bLastLine = FALSE;
while (p_szCurrentLine)
{
// update command index
g_iCommandIndex[iLineIndex] = iCommandIndex;
p_szNextLine = strchr(p_szCurrentLine+1, '-');
if (!p_szNextLine)
{
bLastLine = TRUE;
if (!p_szNextCom)
p_szNextLine = p_szCurrentLine + strlen(p_szCurrentLine);
else
p_szNextLine = p_szNextCom;
}
else if (!bLastCom && (p_szNextLine > p_szNextCom))
{
bLastLine = TRUE;
p_szNextLine = p_szNextCom;
}
int nLenght = p_szNextLine - p_szCurrentLine;
memset(szSingleLine, 0, 256);
strcpy(szSingleLine, (bTitle ? " " : " "));
strncat(szSingleLine, p_szCurrentLine, nLenght);
if (szSingleLine[strlen(szSingleLine) - 1] != '\n')
strcat(szSingleLine+nLenght, "\n");
if (bTitle)
fn_ComRes_vWriteLine( szSingleLine, C_ComRes_cTitleLine ,p_oRichEditCom, p_stCharFormatCom);
else
fn_ComRes_vWriteLine( szSingleLine, C_ComRes_cNormalLine ,p_oRichEditCom, p_stCharFormatCom);
p_szCurrentLine = bLastLine ? NULL : p_szNextLine;
iLineIndex++;
bTitle = FALSE;
}
g_iCommandIndex[iLineIndex] = iCommandIndex;
p_szCurrentCom = p_szNextCom;
iCommandIndex++;
}
// fn_ComRes_vWriteLine( _szString, _Line ,p_oRichEditCom, p_stCharFormatCom);
}