// // App.cpp - CWinApp。GDI+ 起動、/selftest の分岐、メインウィンドウ生成。 // #include "stdafx.h" #include "App.h" #include "MainFrame.h" #include "SelfTest.h" CImgTestApp theApp; CImgTestApp::CImgTestApp() {} BOOL CImgTestApp::InitInstance() { CWinApp::InitInstance(); // 設定(最近使ったレシピ 等)を HKCU\Software\YFox\ImgTestSystem に保存。 SetRegistryKey(L"YFox"); // GDI+ 起動(CImage/CImageEx が JPEG/PNG 読込に使用)。 Gdiplus::GdiplusStartupInput gdiInput; Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiInput, NULL); // コマンドライン /selftest はヘッドレス自己検証を実行して終了。 CString cmd = m_lpCmdLine; if (cmd.MakeLower().Find(L"/selftest") >= 0) { int rc = selftest::Run(); return FALSE; // UI を出さず終了(ExitInstance で GDI+ 停止) (void)rc; } if (cmd.MakeLower().Find(L"/demosave") >= 0) { selftest::SaveDemoResult(L"demo_result.png"); return FALSE; } CMainFrame* pFrame = new CMainFrame; if (!pFrame->Create(NULL, L"ImgTestSystem - ノーコード画像検査", WS_OVERLAPPEDWINDOW, CFrameWnd::rectDefault, NULL, NULL)) { delete pFrame; return FALSE; } m_pMainWnd = pFrame; pFrame->ShowWindow(SW_SHOW); pFrame->UpdateWindow(); if (cmd.Find(L"/demo") >= 0) pFrame->LoadDemo(); return TRUE; } int CImgTestApp::ExitInstance() { if (m_gdiplusToken) Gdiplus::GdiplusShutdown(m_gdiplusToken); return CWinApp::ExitInstance(); }