www.digitalmars.com         C & C++   DMDScript  

D - Fullscreen in Dig

I don't know if this is a bug in dig or not, but (for me at least), it 
was producing fullscreen windows with *title bars* in windows XP.  
Parhaps this is the intended behavior?  Anyways, to anyone this may 
help, here's my solution.  I simply overloaded the method, but it could 
be placed directly into the class for a permanent fix (although the 
other CanvasGL should be changed as well).

//For CanvasGL in net.BurtonRadons.dig.

   override void digPlatformRecreate () //Modified to do a fullscreen, 
like it should be.
    {
        digPlatformStyle = WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | 
WS_CLIPSIBLINGS;
        if (digPlatformFullscreen)
            digPlatformStyle = WS_VISIBLE | WS_MAXIMIZE | WS_POPUP;

        wglMakeCurrent ((HANDLE) 0, (HANDLE) 0);
        wglDeleteContext (digPlatformGLRC);
        DestroyWindow (digPlatformHWND);
        delete digPlatformHWNDToControl [digPlatformHWND];
        //hwndCreate (0, className, setCaption, style, null);
        HANDLE parent;
        int vleft = CW_USEDEFAULT;
        int vtop = CW_USEDEFAULT;
        int vwidth = width ();
        int vheight = height ();

        if (this.parent () !== null)
            parent = this.parent ().digPlatformHWND;
        if (digPlatformFullscreen)
        {
            parent = (HANDLE) 0;
            vleft = 0;
            vtop = 0;
        }

        digPlatformHWNDCreate(WS_EX_APPWINDOW | 
(digPlatformFullscreen)?WS_EX_TOPMOST:0, digPlatformClassName, 
digPlatformCaption, digPlatformStyle, vleft, vtop, vwidth, vheight, 
parent, (HANDLE) 0, hinst, null);
        digPlatformCreateContext ();
        digPlatformMoved ();
        childIterate (delegate void (Control child) { 
child.digPlatformRecreate (); });
        makeCurrent ();
    }

Note, that it also places fullscreen windows at the top.

-Joel Anderson
Oct 19 2003