home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1998 March
/
CHIPCD_3_98.iso
/
software
/
share
/
sharmies
/
unixdos
/
data.z
/
diff6b.txt
< prev
next >
Wrap
Text File
|
1997-11-18
|
6KB
|
170 lines
#include "RGSTDAFX.H"
#include "cfuncs.hpp" // This is a global C funtion man.
CObject* CreateRuntimeClassObject( char* szClassName )
{
CRuntimeClass* pClassRef = FindRuntimeClass( szClassName, 0 );
if ( pClassRef )
{
// allocate a new object based on the class just acquired
CObject* object = pClassRef->CreateObject();
if (object == NULL)
AfxThrowMemoryException();
return object;
}
else
return NULL;
}
CRuntimeClass* PASCAL FindRuntimeClass( char* szClassName, UINT* pwSchemaNum)
{
CRuntimeClass* pClass;
#ifndef _AFXDLL
for (pClass = CRuntimeClass::pFirstClass; pClass != NULL; pClass = pClass->m_pNextClass)
{
if (lstrcmp(szClassName, pClass->m_lpszClassName) == 0)
return pClass;
}
#else
// all registered CRuntimeClasses should be owned by the app or a DLL
ASSERT(CRuntimeClass::pFirstClass == NULL);
// first walk through the app specific classes
for (pClass = _AfxGetAppData()->pFirstAppClass; pClass != NULL;
pClass = pClass->m_pNextClass)
{
if (lstrcmp(szClassName, pClass->m_lpszClassName) == 0)
return pClass;
}
// now walk through the classes in different DLLs
CDynLinkLibrary* pDLL;
for (pDLL = _AfxGetAppData()->pFirstDLL; pDLL != NULL;
pDLL = pDLL->m_pNextDLL)
{
for (pClass = pDLL->m_pFirstSharedClass; pClass != NULL;
pClass = pClass->m_pNextClass)
{
if (lstrcmp(szClassName, pClass->m_lpszClassName) == 0)
return pClass;
}
}
#endif //_AFXDLL
return NULL; // not found
}
void GetOwnerNameFromDisplay( CString &displayString, CString &owner, CString &name )
{
// Takes strings in format "name(owner)" and makes a owner and a name.
owner.Empty();
name.Empty();
if ( !displayString.IsEmpty() )
{
// Put into proper format.
int pos = displayString.Find( '(' );
CString tempOwner = displayString.Right( displayString.GetLength() - pos );
CString tempName = displayString.Left( pos );
// Get rid of parens and spaces for owner.
for( int i=0; i<tempOwner.GetLength(); i++ )
{
if ( tempOwner[i] != '(' && tempOwner[i] != ')' && tempOwner[i] != ' ' )
{
owner += tempOwner[i];
}
}
// Ditto for name.
for( i=0; i<tempName.GetLength(); i++ )
{
if ( tempName[i] != '(' && tempName[i] != ')' && tempName[i] != ' ' )
{
name += tempName[i];
}
}
}
}
void GetTempDirectory( CString & pathName, CString & aFileName )
{
// buffer to compare to find temp
char firstfour[6];
// get and hold the dos env. don't change anything!!
LPSTR lpszEnv = ::GetDOSEnvironment();
pathName.Empty();
// Get the temp directory.
while ( *lpszEnv!=0 && pathName.IsEmpty() )
{
int len = lstrlen(lpszEnv);
lstrcpyn( firstfour, lpszEnv, ((len>5)?5:len) );
if ( !lstrcmpi( "temp", firstfour ) )
{
pathName = (const char*)&lpszEnv[5];
}
lpszEnv += len + 1;
}
// If we didn't find the temp, use the windows dir.
if ( pathName.IsEmpty() )
{
char * buf = new char[8000];
::GetWindowsDirectory( buf, 8000 );
pathName = (const char *)buf;
delete [] buf;
}
if ( !aFileName.IsEmpty() )
{
// caller wants a pathName appended.
if ( pathName[pathName.GetLength()-1] != '\\' )
{
pathName += '\\';
}
pathName += aFileName;
}
}
extern "C" int GetOsys_Val = -1;
#define WF_WINNT 0x4000
#define WF_WIN95 0x2000
//****** RETURN OPERATING SYSTEM ENVIRONMENT ********************************//
// AUTHOR: Madhur Eichberger //
// //
// OBJECTIVE: //
// Determine the current operation system environment //
// //
// ARGUMENTS: //
// //
// OUTPUT: //
// ret: OS_WIN31 Windows 3.1 //
// ret: OS_WIN95 Windows 95 //
// ret: OS_WINNT Windows NT //
// //
// CREATED 07/18/95 MADHUR EICHBERGER //
//***************************************************************************//
extern "C" int GetOsys()
{
DWORD dwVersion;
int ret;
//****** CHECK IF FIRST TIME **********************************************
if (GetOsys_Val > 0)
return(GetOsys_Val);
//****** CHECK FLAGS FOR OPERATION SYSTEM *********************************
dwVersion = GetWinFlags();
ret = OS_WIN31; // assume win 3.11
if ((dwVersion & WF_WINNT) != 0) ret = OS_WINNT;
if ((dwVersion & WF_WIN95) != 0) ret = OS_WIN95;
GetOsys_Val = ret; // save for direct access next time
TRACE("GetOsys: ret=%d, GetWinFlags: 0x%lX",ret,dwVersion);
return(ret);
}