All 5 phases of the open-source Decal rebuild: Phase 1: 14 decompiled .NET projects (Interop.*, Adapter, FileService, DecalUtil) Phase 2: 10 native DLLs rewritten as C# COM servers with matching GUIDs - DecalDat, DHS, SpellFilter, DecalInput, DecalNet, DecalFilters - Decal.Core, DecalControls, DecalRender, D3DService Phase 3: C++ shims for Inject.DLL (D3D9 hooking) and LauncherHook.DLL Phase 4: DenAgent WinForms tray application Phase 5: WiX installer and build script 25 C# projects building with 0 errors. Native C++ projects require VS 2022 + Windows SDK (x86). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
105 lines
2.7 KiB
C++
105 lines
2.7 KiB
C++
// DecalSupportLibraries.cpp : Defines the class behaviors for the application.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "DecalSupportLibraries.h"
|
|
#include "DecalSupportLibrariesDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
|
|
// CDecalSupportLibrariesApp
|
|
|
|
BEGIN_MESSAGE_MAP(CDecalSupportLibrariesApp, CWinApp)
|
|
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CDecalSupportLibrariesApp construction
|
|
|
|
CDecalSupportLibrariesApp::CDecalSupportLibrariesApp()
|
|
{
|
|
// TODO: add construction code here,
|
|
// Place all significant initialization in InitInstance
|
|
}
|
|
|
|
|
|
// The one and only CDecalSupportLibrariesApp object
|
|
|
|
CDecalSupportLibrariesApp theApp;
|
|
|
|
const GUID CDECL BASED_CODE _tlid =
|
|
{ 0x24241FCB, 0x6DD4, 0x4B97, { 0x8C, 0x1F, 0x88, 0xA2, 0x30, 0x84, 0xAF, 0xA5 } };
|
|
const WORD _wVerMajor = 1;
|
|
const WORD _wVerMinor = 0;
|
|
|
|
|
|
// CDecalSupportLibrariesApp initialization
|
|
|
|
BOOL CDecalSupportLibrariesApp::InitInstance()
|
|
{
|
|
// InitCommonControls() is required on Windows XP if an application
|
|
// manifest specifies use of ComCtl32.dll version 6 or later to enable
|
|
// visual styles. Otherwise, any window creation will fail.
|
|
InitCommonControls();
|
|
|
|
CWinApp::InitInstance();
|
|
|
|
// Initialize OLE libraries
|
|
if (!AfxOleInit())
|
|
{
|
|
AfxMessageBox(IDP_OLE_INIT_FAILED);
|
|
return FALSE;
|
|
}
|
|
|
|
AfxEnableControlContainer();
|
|
|
|
// Parse command line for automation or reg/unreg switches.
|
|
CCommandLineInfo cmdInfo;
|
|
ParseCommandLine(cmdInfo);
|
|
|
|
// App was launched with /Embedding or /Automation switch.
|
|
// Run app as automation server.
|
|
if (cmdInfo.m_bRunEmbedded || cmdInfo.m_bRunAutomated)
|
|
{
|
|
// Register class factories via CoRegisterClassObject().
|
|
COleTemplateServer::RegisterAll();
|
|
}
|
|
// App was launched with /Unregserver or /Unregister switch. Remove
|
|
// entries from the registry.
|
|
else if (cmdInfo.m_nShellCommand == CCommandLineInfo::AppUnregister)
|
|
{
|
|
COleObjectFactory::UpdateRegistryAll(FALSE);
|
|
AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor);
|
|
return FALSE;
|
|
}
|
|
// App was launched standalone or with other switches (e.g. /Register
|
|
// or /Regserver). Update registry entries, including typelibrary.
|
|
else
|
|
{
|
|
COleObjectFactory::UpdateRegistryAll();
|
|
AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid);
|
|
if (cmdInfo.m_nShellCommand == CCommandLineInfo::AppRegister)
|
|
return FALSE;
|
|
}
|
|
|
|
CDecalSupportLibrariesDlg dlg;
|
|
m_pMainWnd = &dlg;
|
|
INT_PTR 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;
|
|
}
|