Codesnippets > Inline / 3rd party

Unborder the GLB-Window

(1/2) > >>

Schranz0r:
Code by Gernot Frisch: :good:

For Win32:


--- Code: GLBasic ---
Unborder(64,64)

FUNCTION foo:
ENDFUNCTION

INLINE
        }
        extern "C" int __stdcall GetWindowLongA(void*, int);
        extern "C" int __stdcall SetWindowLongA(void*, int, int);
        extern "C" int __stdcall SetWindowPos(void*, int, int, int, int, int, int);
        #define GWL_STYLE                       (-16)
        #define WS_POPUP            0x80000000L
        #define WS_CAPTION          0x00C00000L     /* WS_BORDER | WS_DLGFRAME  */
        namespace __GLBASIC__ {
ENDINLINE

FUNCTION Unborder: x,y
LOCAL sx,sy
        GETSCREENSIZE sx,sy

        INLINE
                int style = ::GetWindowLongA(GLBASIC_HWND(), GWL_STYLE);
                style &= ~WS_CAPTION;
                style |= WS_POPUP;
                ::SetWindowLongA(GLBASIC_HWND(), GWL_STYLE,  style);
                ::SetWindowPos(GLBASIC_HWND(), -1, x,y,sx,sy,0);
        ENDINLINE
ENDFUNCTION
 

D2O:
Cool  :nw:

Wenn man nun das Fenster selber etwas Transparent machen könnte oder ne bestimmte farbe.
Könnte man coole efekte bzw. Fenster machen.

Z.b ein Spiel laufen lasen und im hintergrund sieht man den Desktop oder ein gefaktes rundes fenster :)

Wir müssten eine separate Code ecke haben wo nur Inline sachen reinkommen.

Schranz0r:
Jo finde ich auch :)

Schranz0r:
Auch ne gute Idee, werden wir mal besprechen müssen!

Heiko:
vielleicht noch eine Anmerkung zu unborder...


--- Code: GLBasic ---GLOBAL sx, sy, w, h
GETSCREENSIZE sx, sy
GETDESKTOPSIZE w, h
Unborder(w/2-sx/2,h/2-sy/2)
da das Fenster standardmässig mittig gesetzt wird.
sonst taucht es wie im obigen code erst bei position 64,64 (oder whatever) auf und beim beenden nochmal mittig...

leider erscheint beim beenden nochmal kurz der rahmen, aber das ist ja nicht weiter tragisch.

Navigation

[0] Message Index

[#] Next page

Go to full version