80 lines
2.5 KiB
C++
80 lines
2.5 KiB
C++
// FlightController.cpp: 定义应用程序的入口点。
|
||
//
|
||
|
||
#include <QApplication>
|
||
#include <QFile>
|
||
#include <QDir>
|
||
#include <QFontDatabase>
|
||
#include <QMessageBox>
|
||
#include "MainWindow.h"
|
||
|
||
#include "VlcMediaPlayer.h"
|
||
#include "SpdLog.h"
|
||
#include "CrashHandler.h"
|
||
|
||
#include <Windows.h>
|
||
#include <DbgHelp.h>
|
||
#pragma comment(lib, "DbgHelp.lib")
|
||
|
||
using namespace std;
|
||
|
||
LONG CreateCrashHandler(EXCEPTION_POINTERS* pException) {
|
||
QString cur = QDateTime::currentDateTime().toString("yyyy_MM_dd_hh_mm_mm_ss");
|
||
QString dumpFileName = qApp->applicationName() + "_Dump_" + cur + ".dump";
|
||
EXCEPTION_RECORD* record = pException->ExceptionRecord;
|
||
QString errCode = QString::number(record->ExceptionCode, 16);
|
||
QString errAddr = QString::number((uint)record->ExceptionAddress, 16);
|
||
QString errFlag = QString::number((uint)record->ExceptionFlags, 16);
|
||
QString errPara = QString::number(record->NumberParameters, 16);
|
||
HANDLE dumpHandle = CreateFile((LPCWSTR)dumpFileName.utf16(), GENERIC_WRITE,
|
||
0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||
if (dumpHandle != INVALID_HANDLE_VALUE) {
|
||
MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
|
||
dumpInfo.ExceptionPointers = pException;
|
||
dumpInfo.ThreadId = GetCurrentThreadId();
|
||
dumpInfo.ClientPointers = TRUE;
|
||
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), dumpHandle,
|
||
MiniDumpNormal, &dumpInfo, NULL, NULL);
|
||
CloseHandle(dumpHandle);
|
||
}
|
||
|
||
QMessageBox::warning(nullptr, "dump", QString("ErrorCode%1 ErrorAddr:%2 ErrorFlag:%3 ErrorPara:%4").arg(errCode)
|
||
.arg(errAddr).arg(errFlag).arg(errPara), QMessageBox::Ok);
|
||
return EXCEPTION_EXECUTE_HANDLER;
|
||
}
|
||
|
||
int main(int argc, char* argv[]) {
|
||
//#ifdef Q_OS_WIN
|
||
// SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)CreateCrashHandler);
|
||
//#endif
|
||
|
||
QApplication app(argc, argv);
|
||
InstallCrashHandler();
|
||
InitSpdlog("ProjectorDisplay_log", "logs/ProjectorDisplay_log.txt", 5);
|
||
|
||
int fontId = QFontDatabase::addApplicationFont(QApplication::applicationDirPath() + "/ProjectDisplay/font/font.ttf");
|
||
QStringList fontFamilies = QFontDatabase::applicationFontFamilies(fontId);
|
||
|
||
if (fontFamilies.size() <= 0) {
|
||
qDebug() << "load font failed:" ;
|
||
UninitSpdlog();
|
||
return -1;
|
||
}
|
||
|
||
VlcMediaPlayer::Init();
|
||
|
||
MainWindow mainWindow(fontFamilies);
|
||
|
||
mainWindow.show();
|
||
|
||
mainWindow.Adjust();
|
||
|
||
int ret = app.exec();
|
||
|
||
VlcMediaPlayer::Uninit();
|
||
|
||
UninitSpdlog();
|
||
|
||
return ret;
|
||
}
|