115 lines
2.7 KiB
C++
115 lines
2.7 KiB
C++
// TweakNVidia128.cpp : Defines the class behaviors for the application.
|
|
//
|
|
|
|
#include "StdAfx.h"
|
|
#include "TweakNVidia128.h"
|
|
#include "TweakNVidia128Dlg.h"
|
|
#include "ddraw.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTweakNVidia128App
|
|
|
|
BEGIN_MESSAGE_MAP(CTweakNVidia128App, CWinApp)
|
|
//{{AFX_MSG_MAP(CTweakNVidia128App)
|
|
//}}AFX_MSG
|
|
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTweakNVidia128App construction
|
|
|
|
CTweakNVidia128App::CTweakNVidia128App()
|
|
{
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// The one and only CTweakNVidia128App object
|
|
|
|
CTweakNVidia128App theApp;
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTweakNVidia128App initialization
|
|
|
|
BOOL CTweakNVidia128App::InitInstance()
|
|
{
|
|
// Standard initialization
|
|
|
|
switch (eDetectNVidiaRiva128())
|
|
{
|
|
case eNoDX6:
|
|
::MessageBox(0, "DirectX 6.0 cannot be found. Please install DirectX 6.0.",
|
|
"Tweak NVidia Riva 128 Error", MB_OK | MB_ICONHAND);
|
|
return FALSE;
|
|
break;
|
|
|
|
case eNoRiva128:
|
|
::MessageBox(0, "Tweak compatible NVidia Riva 128 not found. Please consult the 'readme.txt'\n"
|
|
"file for more information.",
|
|
"Tweak NVidia Riva 128 Error", MB_OK | MB_ICONHAND);
|
|
return FALSE;
|
|
break;
|
|
|
|
default:;
|
|
}
|
|
|
|
CTweakNVidia128Dlg dlg;
|
|
m_pMainWnd = &dlg;
|
|
int nResponse = dlg.DoModal();
|
|
if (nResponse == IDOK)
|
|
{
|
|
}
|
|
else if (nResponse == IDCANCEL)
|
|
{
|
|
}
|
|
|
|
// Since the dialog has been closed, return FALSE so that we exit the
|
|
// application, rather than start the application's message pump.
|
|
return FALSE;
|
|
}
|
|
|
|
ETweakError eDetectNVidiaRiva128()
|
|
{
|
|
GUID guid;
|
|
LPDIRECTDRAW pdd = 0; // DirectDraw device.
|
|
LPDIRECTDRAW4 pdd4 = 0; // DirectDraw2 device.
|
|
HRESULT hres;
|
|
DDDEVICEIDENTIFIER devidIdentifier; // Device identifier.
|
|
|
|
// Use a null guid.
|
|
memset(&guid, 0, sizeof(GUID));
|
|
|
|
// Create the direct draw device.
|
|
hres = DirectDrawCreate(&guid, &pdd, 0);
|
|
if (FAILED(hres) || !pdd)
|
|
return eNoDX6;
|
|
|
|
// Get the direct draw 2 interface.
|
|
hres = pdd->QueryInterface(IID_IDirectDraw4, (LPVOID*)&pdd4);
|
|
if (FAILED(hres) || !pdd4)
|
|
{
|
|
pdd->Release();
|
|
return eNoDX6;
|
|
}
|
|
|
|
// Get the device identifier.
|
|
pdd4->GetDeviceIdentifier(&devidIdentifier, 0);
|
|
|
|
// Release the various interfaces and return.
|
|
pdd4->Release();
|
|
pdd->Release();
|
|
|
|
// Compare IDs to determine if the device is a NVidia Riva 128.
|
|
if (devidIdentifier.dwVendorId == 0x000012d2 &&
|
|
devidIdentifier.dwDeviceId == 0x00000018)
|
|
{
|
|
return eSuccess;
|
|
}
|
|
|
|
return eNoRiva128;
|
|
} |