code_app/modules/twainui/dllmain.cpp

85 lines
1.9 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 0
if (NULL != g_manager)
{
g_manager->deleteLater();
g_manager = nullptr;
}
if (NULL != g_hThread)
{
QApplication::exit();
HGBase_CloseThread(g_hThread);
g_hThread = NULL;
HGBase_DestroyEvent(g_event);
g_event = NULL;
}
#endif
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