culturered_client/ProjectorDisplay/main.cpp
2024-09-07 11:34:44 +08:00

80 lines
2.5 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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;
}