Historique des modifications - Message

Message #10336

Sujet: Position de la fenêtre


Type Date Auteur Contenu
Création du message 30-01-2012 20:10:31 Magun
pour un fullscreen windowed il faut juste changer la grandeur de la fenetre à la taille de l'écran moins la taille des decorations (minus, close, ...)
BorderX = GetSystemMetrics(SM_CXDLGFRAME);

BorderY = GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYDLGFRAME);

par contre j'est le code pour changer la taille de la fentre a la voler pour irrlicht, tout comme pouvoire changer en fullscreen également a la voler, a ce que je sache je suis le seul utilisant irrlicht qui les pondues smile
maintenant y a rien de compliquer ...
bref, le fait que le device ne change pas de place directement (sous windows), c'est surment qu'il faut faire un update du Handle après le code que je t'est passer

pour récupéré la position de la fenêtre la malheureusement je ne c'est pas, je suis pro linux, et chercher dans les doc c'est reloue, tu me préviens si tu trouve a la rigeur ? wink

le code est similaire pour changer la résolution

Code c++ :

        void resizeDevice(irr::IrrlichtDevice *device, irr::core::dimension2du size)
        {
            irr::video::SExposedVideoData evd = device->getVideoDriver()->getExposedVideoData();

            #if defined(_WIN32) || defined(_WIN64) || defined(WIN32) || defined(WIN64)
                if(device->getType() != EIDT_WIN32) return;
                irr::core::dimension2du pos = device->getVideoModeList()->getDesktopResolution();
                    pos -= size;
                    pos /= 2;
                HWND handle;
                switch(device->getVideoDriver()->getdevice->getVideoDriver()Type())
                {
                    EDT_DIRECT3D8: handle = (HWND)evd.D3D8.HWnd; break;
                    EDT_DIRECT3D9: handle = (HWND)evd.D3D9.HWnd; break;
                    default: handle = (HWND)evd.OpenGLWin32.HWnd; break;
                }
                ShowWindow(handle, SW_SHOW);
                UpdateWindow(handle);
                MoveWindow(handle, pos.Width, pos.Height, size.Width, size.Height, FALSE);
            #elif defined __linux
                if(device->getType() != irr::EIDT_X11) return;
                if(evd.OpenGLLinux.X11Display && evd.OpenGLLinux.X11Window)
                {
                    XResizeWindow((Display*)evd.OpenGLLinux.X11Display, (Window)evd.OpenGLLinux.X11Window, size.Width, size.Height);
                    XRaiseWindow((Display*)evd.OpenGLLinux.X11Display, (Window)evd.OpenGLLinux.X11Window);
                    XFlush((Display*)evd.OpenGLLinux.X11Display);
                }
            #endif
            device->getVideoDriver()->OnResize(irr::core::dimension2du(size.Width, size.Height));
            device->getVideoDriver()->setViewPort(irr::core::recti(0,0,size.Width, size.Height));
            printf("resize device to %dx%d\
", size.Width, size.Height);
        }

pour passer en fullscreen je te laisse la joie de trouver smile

edit:
c'est:
RECT r;

GetClientRect(HWnd, &r);
pour récupéré la boundingbox de la fenetre

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
152 invités en ligne
membre en ligne: -
RSS Feed