• Sam Lantinga's avatar
    Date: Mon, 6 Feb 2006 11:41:04 -0500 · fc0f66b5
    Sam Lantinga authored
    From: "mystml@adinet.com.uy"
    Subject: [SDL] ALT-F4 using DirectX
    
    My game isn't getting SDL_QUIT when I press ALT-F4 using the DirectX
    driver; it does get SDL_QUIT when I press the red X in the window.
    
    I tracked this down to DX5_HandleMessage() in SDL_dx5events.c;
    WM_SYSKEYDOWN is being trapped and ignored which causes Windows not to post
    a WM_CLOSE, hence no SDL_QUIT is being generated.
    
    The relevant code is this :
    
                    /* The keyboard is handled via DirectInput */
                    case WM_SYSKEYUP:
                    case WM_SYSKEYDOWN:
                    case WM_KEYUP:
                    case WM_KEYDOWN: {
                            /* Ignore windows keyboard messages */;
                    }
                    return(0);
    
    If I comment the WM_SYSKEYDOWN case, it falls through DefWindowProc() and
    ALT-F4 starts working again.
    
    I'm not sure about the best way to fix this. One option is handling ALT-F4
    as a particular case somehow, but doesn't sound good. Another option would
    be to handle WM_SYSKEYDOWN separately and breaking instead of returning 0,
    so processing falls through and goes to DefWindowProc which does The Right
    Thing (TM). This seems to be the minimal change that makes ALT-F4 work and
    normal keyboard input continues to work.
    
    Does this sound reasonable? Am I overlooking anything? Do I submit a patch?
    
    --Gabriel
    
    --HG--
    extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401352
    fc0f66b5
Name
Last commit
Last update
docs Loading commit data...
include Loading commit data...
src Loading commit data...
test Loading commit data...
.cvsignore Loading commit data...
BUGS Loading commit data...
Borland.html Loading commit data...
Borland.zip Loading commit data...
COPYING Loading commit data...
CREDITS Loading commit data...
CWprojects.sea.bin Loading commit data...
EpocBuildFiles.zip Loading commit data...
INSTALL Loading commit data...
MPWmake.sea.bin Loading commit data...
Makefile.am Loading commit data...
Makefile.dc Loading commit data...
PBProjects.tar.gz Loading commit data...
README Loading commit data...
README-SDL.txt Loading commit data...
README.AmigaOS Loading commit data...
README.CVS Loading commit data...
README.DC Loading commit data...
README.Epoc Loading commit data...
README.MacOS Loading commit data...
README.MacOSX Loading commit data...
README.MiNT Loading commit data...
README.NanoX Loading commit data...
README.OS2 Loading commit data...
README.PicoGUI Loading commit data...
README.QNX Loading commit data...
README.Qtopia Loading commit data...
README.RISCOS Loading commit data...
README.WinCE Loading commit data...
README.wscons Loading commit data...
SDL.qpg.in Loading commit data...
SDL.spec.in Loading commit data...
TODO Loading commit data...
VisualC.html Loading commit data...
VisualC.zip Loading commit data...
VisualCE.zip Loading commit data...
Watcom.mif Loading commit data...
WhatsNew Loading commit data...
acinclude.m4 Loading commit data...
autogen.sh Loading commit data...
config.guess Loading commit data...
config.sub Loading commit data...
configure.in Loading commit data...
docs.html Loading commit data...
ltmain.sh Loading commit data...
sdl-config.in Loading commit data...
sdl.m4 Loading commit data...
setvars.cmd Loading commit data...
strip_fPIC.sh Loading commit data...