Window focus
Hello all, I would really, really, really appreciate an example/article/tutorial or any help on how to handle Window (created basing on NeHe template) alt-tabbing. I’ve been trying to find something and work it out myself for around a week now but I failed miserably. I understand this should fit into this sort of scheme: Window looses its focus: 1 Window is killed 2 fullscreen flag set to FALSE 3 new window (minimized) created Window regains its focus: 1 Window is killed 2 fullscreen flag set to TRUE 3 new window (maximized) created Thank you very much in advance.
What happens when you try to alt-tab your app? Knowing the symptoms will help us resolve your problem.
Right, perhaps I wasn’t very descriptive, sorry for that.
Basing on NeHe skeleton code I use: CreateGLWindow() and KillGLWindow() functions that should nicely create the window and close it cleanly checking for errors on the way.
In order to check if the window has lost/regained its focus, following WM messages can be used: WM_SETFOCUS, WM_KILLFOCUS or WM_ACTIVATEAPP they are very similar (the way I understand it from the MSDN documentation).
I think, this sort of code should do the trick:
In CreateGLWindow() fullscreen flag is checked and if false ShowWindow(hWnd,SW_MINIMIZE)
Things seem to be going well when the window looses its focus but when trying to go back to it I get ‘Could Not Unregister Class’ error message from KillGLWindow().
It looks to me like the KillGLWindow() is sent more than once but I am not sure.
If all above doesn’t make much sense I can post the whole code (simplified as much as possible of course).
Thank you
Basing on NeHe skeleton code I use: CreateGLWindow() and KillGLWindow() functions that should nicely create the window and close it cleanly checking for errors on the way.
In order to check if the window has lost/regained its focus, following WM messages can be used: WM_SETFOCUS, WM_KILLFOCUS or WM_ACTIVATEAPP they are very similar (the way I understand it from the MSDN documentation).
I think, this sort of code should do the trick:
case WM_ACTIVATEAPP:{ if ((BOOL)wParam==TRUE) { // window was activated active=TRUE; KillGLWindow(); // close window fullscreen=TRUE; // full screen flag set to true window_created=FALSE; // recereate it at the next loop } else { // window lost its focus active=FALSE; KillGLWindow(); // close window fullscreen=FALSE; // full screen flag set to false window_created=FALSE; // recereate it at the next loop }}break;
In CreateGLWindow() fullscreen flag is checked and if false ShowWindow(hWnd,SW_MINIMIZE)
Things seem to be going well when the window looses its focus but when trying to go back to it I get ‘Could Not Unregister Class’ error message from KillGLWindow().
It looks to me like the KillGLWindow() is sent more than once but I am not sure.
If all above doesn’t make much sense I can post the whole code (simplified as much as possible of course).
Thank you
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement