bool BaseManager::create(int _width, int _height) { const unsigned int width = _width; const unsigned int height = _height; bool windowed = true; // регистрируем класс окна WNDCLASS wc = { 0, (WNDPROC)DXWndProc, 0, 0, GetModuleHandle(NULL), LoadIcon(NULL, MAKEINTRESOURCE(1001)), LoadCursor(NULL, IDC_ARROW), (HBRUSH)GetStockObject(BLACK_BRUSH), NULL, TEXT(WND_CLASS_NAME), }; RegisterClass(&wc); // создаем главное окно hWnd = CreateWindow(wc.lpszClassName, TEXT("OpenGL3 Render Window"), WS_POPUP, 0, 0, 0, 0, GetDesktopWindow(), NULL, wc.hInstance, this); if (!hWnd) { //OutException("fatal error!", "failed create window"); return false; } #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 char buf[MAX_PATH]; ::GetModuleFileNameA(0, (LPCH)&buf, MAX_PATH); HINSTANCE instance = ::GetModuleHandleA(buf); HICON hIconSmall = static_cast<HICON>(LoadImage(instance, MAKEINTRESOURCE(1001), IMAGE_ICON, 32, 32, LR_DEFAULTSIZE)); HICON hIconBig = static_cast<HICON>(LoadImage(instance, MAKEINTRESOURCE(1001), IMAGE_ICON, 256, 256, LR_DEFAULTSIZE)); if (hIconSmall) ::SendMessageA(hWnd, WM_SETICON, 0, (LPARAM)hIconSmall); if (hIconBig) ::SendMessageA(hWnd, WM_SETICON, 1, (LPARAM)hIconBig); #endif hInstance = wc.hInstance; windowAdjustSettings(hWnd, width, height, !windowed); if (!createRender(width, height, windowed)) { return false; } createGui(); createInput((size_t)hWnd); createPointerManager((size_t)hWnd); createScene(); _windowResized(); return true; }
bool BaseManager::create() { const unsigned int width = 1024; const unsigned int height = 768; bool windowed = true; // регистрируем класс окна WNDCLASS wc = { 0, (WNDPROC)DXWndProc, 0, 0, GetModuleHandle(NULL), LoadIcon(NULL, MAKEINTRESOURCE(1001)), LoadCursor(NULL, IDC_ARROW), (HBRUSH)GetStockObject(BLACK_BRUSH), NULL, TEXT(WND_CLASS_NAME), }; RegisterClass(&wc); // создаем главное окно hWnd = CreateWindow(wc.lpszClassName, TEXT("Direct3D9 Render Window"), WS_POPUP, 0, 0, 0, 0, GetDesktopWindow(), NULL, wc.hInstance, this); if (!hWnd) { //OutException("fatal error!", "failed create window"); return false; } #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 // берем имя нашего экзешника char buf[MAX_PATH]; ::GetModuleFileNameA(0, (LPCH)&buf, MAX_PATH); // берем инстанс нашего модуля HINSTANCE instance = ::GetModuleHandleA(buf); // побыстрому грузим иконку HICON hIcon = ::LoadIcon(instance, MAKEINTRESOURCE(1001)); if (hIcon) { ::SendMessageA((HWND)hWnd, WM_SETICON, 1, (LPARAM)hIcon); ::SendMessageA((HWND)hWnd, WM_SETICON, 0, (LPARAM)hIcon); } #endif hInstance = wc.hInstance; windowAdjustSettings(hWnd, width, height, !windowed); createRender(width, height, windowed); createGui(); createInput((size_t)hWnd); createPointerManager((size_t)hWnd); createScene(); _windowResized(); return true; }
bool MyGUIRenderClick::create(IDirect3DDevice9 * pDevice) { createRender(pDevice); createGui(); _windowResized(); return true; }
void BaseManager::registerWindow(HWND _hWnd, HGE* _mpHGE, bool _isWindowed) { hWnd = _hWnd; mpHGE = _mpHGE; #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 char buf[MAX_PATH]; ::GetModuleFileNameA(0, (LPCH)&buf, MAX_PATH); HINSTANCE instance = ::GetModuleHandleA(buf); HICON hIcon = ::LoadIcon(instance, MAKEINTRESOURCE(1001)); if (hIcon) { ::SendMessageA((HWND)hWnd, WM_SETICON, 1, (LPARAM)hIcon); ::SendMessageA((HWND)hWnd, WM_SETICON, 0, (LPARAM)hIcon); } #endif hInstance = instance; RECT rect = { 0, 0, 0, 0 }; GetClientRect(hWnd, &rect); int width = rect.right - rect.left; int height = rect.bottom - rect.top; windowAdjustSettings(hWnd, width, height, !_isWindowed); //createRender(width, height, _isWindowed); createGui(); createInput((size_t)hWnd); createPointerManager((size_t)hWnd); createScene(); _windowResized(); }
bool BaseManager::create() { const unsigned int width = 1024; const unsigned int height = 768; bool windowed = true; mpHGE = hgeCreate(HGE_VERSION); if (!mpHGE) return false; mpHGE->System_SetState(HGE_WINDOWED, windowed); mpHGE->System_SetState(HGE_SCREENWIDTH, width); mpHGE->System_SetState(HGE_SCREENHEIGHT, height); mpHGE->System_SetState(HGE_USESOUND, false); mpHGE->System_SetState(HGE_HIDEMOUSE, false); mpHGE->System_SetState(HGE_SHOWSPLASH, true); mpHGE->System_SetState(HGE_FPS, 100); mpHGE->System_SetState(HGE_LOGFILE, "hge.log"); mpHGE->System_SetState(HGE_FRAMEFUNC, frame); if (!mpHGE->System_Initiate()) return false; hWnd = mpHGE->System_GetState(HGE_HWND); //hgeSprite *portalSprite; //HTEXTURE hPortal = mpHGE->Texture_Load("resources/gems.png"); //portalSprite = new hgeSprite(hPortal, 0, 31, 32, 32); //portalSprite->Render(0, 0); /* WNDCLASS wc = { 0, (WNDPROC)DXWndProc, 0, 0, GetModuleHandle(NULL), LoadIcon(NULL, MAKEINTRESOURCE(1001)), LoadCursor(NULL, IDC_ARROW), (HBRUSH)GetStockObject(BLACK_BRUSH), NULL, TEXT(WND_CLASS_NAME), }; RegisterClass(&wc); hWnd = CreateWindow(wc.lpszClassName, TEXT("Direct3D9 Render Window"), WS_POPUP, 0, 0, 0, 0, GetDesktopWindow(), NULL, wc.hInstance, this); if (!hWnd) { //OutException("fatal error!", "failed create window"); return false; } */ #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32 char buf[MAX_PATH]; ::GetModuleFileNameA(0, (LPCH)&buf, MAX_PATH); HINSTANCE instance = ::GetModuleHandleA(buf); HICON hIcon = ::LoadIcon(instance, MAKEINTRESOURCE(1001)); if (hIcon) { ::SendMessageA((HWND)hWnd, WM_SETICON, 1, (LPARAM)hIcon); ::SendMessageA((HWND)hWnd, WM_SETICON, 0, (LPARAM)hIcon); } #endif hInstance = instance; windowAdjustSettings(hWnd, width, height, !windowed); createRender(width, height, windowed); createGui(); createInput((size_t)hWnd); createPointerManager((size_t)hWnd); createScene(); _windowResized(); return true; }
bool BaseManager::create(int _width, int _height) { // initialize SDL if (SDL_Init(SDL_INIT_VIDEO) != 0) { std::cerr << "Failed to initialize SDL2."; exit(1); } // initialize SDL_image #ifndef EMSCRIPTEN if (IMG_Init(~0) == 0) { std::cerr << "Failed to initialize SDL_image."; exit(1); } #endif //chdir("/"); SDL_Surface *image = nullptr; std::string fileName = "/MyGUI_Media/DejaVuSansFontGenerated_15.png"; image = IMG_Load(fileName.c_str()); if (image == nullptr) { std::cerr << "Failed to load " << fileName << " image" << std::endl; exit(-1); } // fileName = "test.png"; // image = IMG_Load(fileName.c_str()); // if (image == nullptr) // { // std::cerr << "Failed to load " << fileName << " image" << std::endl; // exit(-1); // } const unsigned int width = _width; const unsigned int height = _height; bool windowed = true; // create window and position it at the center of the screen SDL_DisplayMode currDisp; MYGUI_ASSERT(SDL_GetCurrentDisplayMode(0, &currDisp) == 0, "Failed to retrieve screen info."); int left = (currDisp.w - width) / 2; int top = (currDisp.h - height) / 2; mWindow = SDL_CreateWindow("OpenGLES Render Window", left, top, width, height, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE); MYGUI_ASSERT(mWindow != nullptr, "Failed to create SDL window."); mContext = SDL_GL_CreateContext(mWindow); MYGUI_ASSERT(mContext != nullptr, "Failed to create SDL context."); mWindowOn = true; if (!createRender(width, height, windowed)) { return false; } createGui(); createInput(); createPointerManager(); // this needs to be called before createScene() since some demos require // screen size to properly position the widgets _windowResized(width, height); createScene(); return true; }
void BaseManager::run() { #ifndef EMSCRIPTEN while (!mExit) #endif { while (SDL_PollEvent(&mEvent) != 0) { switch (mEvent.type) { // keyboard events case SDL_KEYDOWN: mKeyCode = mEvent.key.keysym.sym; keyPressed(mKeyCode, nullptr); break; case SDL_TEXTINPUT: mKeyCode = SDLK_UNKNOWN; keyPressed(mKeyCode, &mEvent.text); break; case SDL_KEYUP: keyReleased(mEvent.key); break; // mouse events case SDL_MOUSEMOTION: mouseMoved(mEvent.motion); break; case SDL_MOUSEBUTTONDOWN: mousePressed(mEvent.button); break; case SDL_MOUSEBUTTONUP: mouseReleased(mEvent.button); break; case SDL_MOUSEWHEEL: mouseWheelMoved(mEvent.wheel); break; // drop file events case SDL_DROPFILE: break; // windows events case SDL_WINDOWEVENT: switch (mEvent.window.event) { case SDL_WINDOWEVENT_CLOSE: mExit = true; break; case SDL_WINDOWEVENT_RESIZED: _windowResized(mEvent.window.data1, mEvent.window.data2); break; case SDL_WINDOWEVENT_SHOWN: case SDL_WINDOWEVENT_RESTORED: case SDL_WINDOWEVENT_EXPOSED: case SDL_WINDOWEVENT_MAXIMIZED: mWindowOn = true; break; case SDL_WINDOWEVENT_MINIMIZED: case SDL_WINDOWEVENT_HIDDEN: mWindowOn = false; default: break; } break; default: break; } } glClearColor(0, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); drawOneFrame(); if (!mWindowOn) SDL_Delay(50); } }