12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #include <flutter/dart_project.h>
- #include <flutter/flutter_view_controller.h>
- #include <windows.h>
- #include "flutter_window.h"
- #include "utils.h"
- int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
- _In_ wchar_t *command_line, _In_ int show_command)
- {
- HANDLE hMutexInstance = CreateMutex(NULL, TRUE, L"AppFlowyMutex");
- HWND handle = FindWindowA(NULL, "AppFlowy");
- if (GetLastError() == ERROR_ALREADY_EXISTS) {
- WINDOWPLACEMENT place = { sizeof(WINDOWPLACEMENT) };
- GetWindowPlacement(handle, &place);
- ShowWindow(handle, SW_NORMAL);
- return 0;
- }
- // Attach to console when present (e.g., 'flutter run') or create a
- // new console when running with a debugger.
- if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent())
- {
- CreateAndAttachConsole();
- }
- // Initialize COM, so that it is available for use in the library and/or
- // plugins.
- ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
- flutter::DartProject project(L"data");
- std::vector<std::string> command_line_arguments =
- GetCommandLineArguments();
- project.set_dart_entrypoint_arguments(std::move(command_line_arguments));
- FlutterWindow window(project);
- Win32Window::Point origin(10, 10);
- Win32Window::Size size(1280, 720);
- if (!window.CreateAndShow(L"AppFlowy", origin, size))
- {
- return EXIT_FAILURE;
- }
- window.SetQuitOnClose(true);
- ::MSG msg;
- while (::GetMessage(&msg, nullptr, 0, 0))
- {
- ::TranslateMessage(&msg);
- ::DispatchMessage(&msg);
- }
- ::CoUninitialize();
- ReleaseMutex(hMutexInstance);
- return EXIT_SUCCESS;
- }
|