83 lines
1.8 KiB
C++
83 lines
1.8 KiB
C++
#include "base/HGDef.h"
|
|
#include "base/HGInc.h"
|
|
#include "base/HGUtility.h"
|
|
#include "base/HGEvent.h"
|
|
#include "base/HGThread.h"
|
|
#include "base/HGMsgPump.h"
|
|
#include <QTranslator>
|
|
#include "lang/app_language.h"
|
|
#include "Manager.h"
|
|
|
|
#if defined (HG_CMP_MSC)
|
|
#include "qmfcapp.hpp"
|
|
#include "qwinwidget.hpp"
|
|
|
|
HINSTANCE g_hInst = NULL;
|
|
HGEvent g_event = NULL;
|
|
Manager* g_manager = NULL;
|
|
HGThread g_hThread = NULL;
|
|
|
|
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpvReserved*/)
|
|
{
|
|
if (dwReason == DLL_PROCESS_ATTACH)
|
|
{
|
|
g_hInst = hInstance;
|
|
|
|
HGChar moduleName[512];
|
|
HGBase_GetModuleName(DllMain, moduleName, 512);
|
|
HGChar modulePath[512];
|
|
HGBase_GetFilePath(moduleName, modulePath, 512);
|
|
|
|
char *env = getenv("QT_QPA_PLATFORM_PLUGIN_PATH");
|
|
if (NULL == env)
|
|
{
|
|
char newEnv[256];
|
|
sprintf(newEnv, "QT_QPA_PLATFORM_PLUGIN_PATH=%s", modulePath);
|
|
putenv(newEnv);
|
|
}
|
|
else if (NULL == strstr(env, modulePath))
|
|
{
|
|
char *newEnv = new char [strlen(env) + 256];
|
|
sprintf(newEnv, "QT_QPA_PLATFORM_PLUGIN_PATH=%s;%s", env, modulePath);
|
|
putenv(newEnv);
|
|
delete []newEnv;
|
|
}
|
|
}
|
|
else if (dwReason == DLL_PROCESS_DETACH)
|
|
{
|
|
if (NULL != g_manager)
|
|
{
|
|
g_manager->deleteLater();
|
|
}
|
|
|
|
if (NULL != g_hThread)
|
|
{
|
|
QApplication::exit();
|
|
HGBase_CloseThread(g_hThread);
|
|
g_hThread = NULL;
|
|
HGBase_DestroyEvent(g_event);
|
|
g_event = NULL;
|
|
}
|
|
|
|
g_hInst = NULL;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
#else
|
|
|
|
void __attribute__((constructor)) global_load(void);
|
|
void __attribute__((destructor)) global_unload(void);
|
|
|
|
void global_load(void)
|
|
{
|
|
|
|
}
|
|
|
|
void global_unload(void)
|
|
{
|
|
|
|
}
|
|
|
|
#endif
|