/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
#define  PARAM_ARRAY_LEN  100
void SetEnvironment( const CString& strPrjName );
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
 int nRetCode = 0;
 // initialize MFC and print and error on failure
 if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
 {
  // TODO: change error code to suit your needs
  std::cerr << _T("Fatal Error: MFC initialization failed") << endl;
  nRetCode = 1;
 }
 else
 {
  LOGICAL  lval = false;
  DARS_MESS cd3msg = {0};
  PDMS_TEXT cd3tex;
  DARS_CERR cd3err ;
  int   iParams [ PARAM_ARRAY_LEN ] ;
  float  fParams [ PARAM_ARRAY_LEN ] ;
  int   id3err, id3nou, id3log;
  int   iNum = 5;
  float  fValue;
  
  PDMS_NAME NAME; 
  PDMS_NAME cd3rfa[5];
  PDMS_WORD TYPE;
  PDMS_DBNAME cd3nam;
  PDMS_WORD cd3typ;
//   float  cd3rfa[4] = {0};
  
  CString strText = HH( hello );
  cout << strText << endl;
  SetEnvironment( "SAM" );
  /*
  HINSTANCE  h116 = : oadLibrary( "d3lib.dll" );
oadLibrary( "d3lib.dll" );
  HINSTANCE  h115 = : oadLibrary( "d3lib___________.dll" );
oadLibrary( "d3lib___________.dll" );
  HINSTANCE  h1151 = : oadLibrary( "d3lib___________.dll" );
oadLibrary( "d3lib___________.dll" );
  if ( h116 == NULL && h115 == NULL )
  {
   AfxMessageBox( "" );
   return 0;
  }
  FARPROC pFun116 = GetProcAddress ( h116, "d3init" );
  FARPROC pFun115 = GetProcAddress ( h115, "d3init" );
  typedef void (*FUNTYPE)( char*, char*, char*, char*, char*, int* );
  if ( pFun116 != NULL )
  {
   FUNTYPE p = (FUNTYPE)pFun116;
   (*p)( "SAM", "SYSTEM", "XXXXXX", "FULL", " ", &id3err );
   
  }
  if ( pFun115 != NULL )
  {
   FUNTYPE p = (FUNTYPE)pFun115;
   (*p)( "SAM", "SYSTEM", "XXXXXX", "FULL", " ", &id3err );
   
  }
  */
  /*  Project entry */
  try
  {
   d3init ( "MMQ", "SYSTEM", "XXXXXX", "FULL", " ", &id3err ) ;
//    HINSTANCE  h115 = : oadLibrary( "d3lib115.dll" );
oadLibrary( "d3lib115.dll" );
//    if ( h115 == NULL )
//    {
//     AfxMessageBox( "" );
//     return 0;
//    }
//    typedef void (*FUNTYPE)( char*, char*, char*, char*, char*, int* );
//    FARPROC pFun115 = GetProcAddress ( h115, "d3init" );
//    if ( pFun115 != NULL )
//    {
//     FUNTYPE p = (FUNTYPE)pFun115;
//     (*p)( "SAM", "SYSTEM", "XXXXXX", "FULL", " ", &id3err );    
//    }
  }
  catch (...)
  {
   AfxMessageBox("登陆异常");
  }
   d3mmdb ( "PAD/DESIGN", " ", &id3err ) ;
   d3mnam ( "=8377/64765", &id3err ) ;
  d3rtyp ( TYPE, &id3err );
// 
//   d3mrel ( "FIRS", "MEMB", &id3err );
   d3rnam ( "NAM", NAME, &id3err );
//  d3rrfa ( "Rule Set", &iNum, cd3rfa, &id3nou, &id3err );
//  d3rrea ( "Tsize", &fValue, &id3err );
//  d3rint ( "Truncate",&id3log, &id3err );
//   d3rlog ( "Lvisibility", &id3log, &id3err );
//   d3rlog ( "Blnk", &id3log, &id3err );
//  d3rref ( "Idlname", cd3nam, &id3err );
//  d3rorl ( "OWN", cd3rfa, &id3err );
//  d3rprl ( "OWN", cd3rfa, &id3err );
//  d3rwor ( "Pjustificatio", TYPE, &id3err );
//  d3rtex ( "Length", cd3tex, &id3err );
//  d3rra ( "Xyposition", &iNum, cd3rfa, &id3nou, &id3err );
//   d3rtyp ( cd3typ, &id3err );
     d3rtex ( "Rtext", cd3tex, &id3err );
  d3rtex ( "Stext", cd3tex, &id3err );
//    d3rtex ( "Ptdistance", cd3tex, &id3err );
//  d3rrea ( "P", &fValue, &id3err );
//   d3rtex ( "PYLE", cd3tex, &id3err );
  
  /* Cancel monitor and output message */
  d3umon ( "NONE" ) ;
  d3emsg ( &id3err, &lval, cd3msg ) ;
  printf ( "%s\n", cd3msg ) ;
  d3fin  ( &id3err ) ;
//  d3fend ( ) ;
  system( "pause" );
  int a = 1;
  int& b= a;
  int* p = &a;
  delete p;
  cout << a << endl;
//   UETypeImp<double> *pdValue = new UETypeImp<double>;
//   *pdValue = a;
//   int b = pdValue->m_obj;
//   cout << b << endl;
/*
  int* pIn = &a;
  int* pIn2 = pIn;
  int*& pIn3 = pIn;
  int** pP1 = &pIn;
  int** pP2 = &pIn2;
  int** pP3 = &pIn3;
*/
  nRetCode = 0;
 }
 return nRetCode;
}
void SetEnvironment( const CString& strPrjName )
{
 try
 {
 //  CString strPdms = "D:\AVEVA\Pdms11.6.SP3";
  CString strPdms = "D:\AVEVA\Pdms11.5.SP1";
  char buffer[4096] = {0};
  CString strPath;
  SetEnvironmentVariable( "PDMSEXE", strPdms );
  GetEnvironmentVariable( "path", buffer, 4096 );
  strPath = buffer;
  SetEnvironmentVariable( "path", strPath+';'+strPdms+';'+strPdms+"\dars;"+strPdms+"\autodraftACAD;" );
  SetEnvironmentVariable( "pdmswk", strPdms+"\pdmswk" );
  SetEnvironmentVariable( "pmllib", strPdms+"\pmllib" );
  SetEnvironmentVariable( "pdmsui", strPdms+"\pdmsui" );
  SetEnvironmentVariable( "PDMSPLOTS", strPdms+"\pdmsui"+"\plots" );
  SetEnvironmentVariable( "pdmsdflts", strPdms+"\pdmsui"+"\DFLTS" );
  SetEnvironmentVariable( "TEMP", strPdms+"\pdmswk" );
  SetEnvironmentVariable( "pdmsuser", strPdms+"\pdmsuser" );
  SetEnvironmentVariable( "PDMSREPDIR", strPdms+"\PDMSUI\REPORTS" );
  SetEnvironmentVariable( "PLOTCADC", strPdms+"\plot\PLOT.EXE" );
  SetEnvironmentVariable( "ADC_PLOT_DIR", "%PLOTCADC%" );
  SetEnvironmentVariable( "PDMSHELPDIR", strPdms+"\onlinehelp" );
  SetEnvironmentVariable( "mas000", strPdms+"\project\mas000" );
  SetEnvironmentVariable( "masmac", strPdms+"\project\masmac" );
  SetEnvironmentVariable( "masiso", strPdms+"\project\masiso" );
  SetEnvironmentVariable( "maspic", strPdms+"\project\maspic" );
  SetEnvironmentVariable( "sam000", strPdms+"\project\sam000" );
  SetEnvironmentVariable( "sammac", strPdms+"\project\sammac" );
  SetEnvironmentVariable( "samiso", strPdms+"\project\samiso" );
  SetEnvironmentVariable( "sampic", strPdms+"\project\sampic" );
  SetEnvironmentVariable( "imp000", strPdms+"\project\imp000" );
  SetEnvironmentVariable( "impmac", strPdms+"\project\impmac" );
  SetEnvironmentVariable( "impiso", strPdms+"\project\impiso" );
  SetEnvironmentVariable( "imppic", strPdms+"\project\imppic" );
  SetEnvironmentVariable( "jjp000", "D:\PROJECT\JJP000 " );
  SetEnvironmentVariable( "jjpmac", "D:\PROJECT\jjpmac" );
  SetEnvironmentVariable( "jjpiso", "D:\PROJECT\jjpiso" );
  SetEnvironmentVariable( "jjppic", "D:\PROJECT\jjppic" ); 
  SetEnvironmentVariable( "MMQ000", "D:\PROJECT\MMQ000 " );
  SetEnvironmentVariable( "MMQmac", "D:\PROJECT\MMQmac" );
  SetEnvironmentVariable( "MMQiso", "D:\PROJECT\MMQiso" );
  SetEnvironmentVariable( "MMQpic", "D:\PROJECT\MMQpic" ); 
 }
 catch (...)
 {
  AfxMessageBox("设置环境变量异常");
 }
}