• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.

Archived

This topic is now archived and is closed to further replies.

Sleepwalker

ALT - Tabbing in DirectX

11 posts in this topic

I have a lil'' question: I am running a program in Fullscreen-exclusive mode... But I can''t alt-tab out of it...is there a possibility to fix this? - Sleepwalker
0

Share this post


Link to post
Share on other sites
I''m not completely sure, but I don''t think that you can. And if you can, you probably have to set it up some way while creating your window.
0

Share this post


Link to post
Share on other sites
Sorry, just adding on to what I had sayd before, if there is a way to CTR-ALT-DEL out of DirectX files (which there is, just set the flag), then there must be a way to ALT-TAB out. Try looking up under help or try contacting microsoft.
0

Share this post


Link to post
Share on other sites
I''m not sure but try that set cooperative level stuff in your program i think that''s the thingy that lets you alt tab.

Kings Revenge
0

Share this post


Link to post
Share on other sites
I messed around with it a little...

Setting other cooperative settings doesn''t work,
but I actually found a way to get out by using
GetMessage(),TranslateMessage(),DispatchMessage() -
Trouble is I can''t get back in...sorta locked myself out...that is, I do get back in but the screens all black (Er...did someone blow the fuse ?)

Well anyway, if you have any idea concerning that tell me...

- Sleepwalker
0

Share this post


Link to post
Share on other sites
If you use createwindowex, with WS_EX_TOPMOST flag enabled this will prevent you from alt-tabbing. Only answer I can think of.
0

Share this post


Link to post
Share on other sites
basically to handle Alt+Tab controls should be quite simple. When you detect that key combination (you must do it if for instance you are using direct Input in ex mode) minimize the app window and set a paused flag in your loop, so you don''t waste system resources rendering to nothing. Then when you receive the WM_ACTIVATE message, you need to RESTORE your surfaces...ie back buffers/z buffers etc...
All surfaces created in vid memory WILL need to be restored, so if you have textyures in video memory you will need to first restore them then reload the texture. If the surface is in system memory, then no reload/restore is needed.

Hope that helps, and as far as I know it''s correct.
0

Share this post


Link to post
Share on other sites
Here's another method to prevent someone from using the dreaded ALT_TAB or CTRL_ALT_DEL, put this line of code right before your main event loop:

SystemParametersInfo(SPI_SCREENSAVERRUNNING, TRUE, NULL, 0);  


Then after the loop to restore the old config:
SystemParametersInfo(SPI_SCREENSAVERRUNNING, FALSE, NULL, 0);  


But I wouldn't recommend using that because some users want to ALT-TAB to look stuff up while playing your game, which makes everything a pain in the ass. First you have to force the game to pause by checking with the WM_ACTIVEAPP message, then when the user tries to go back to the game you'll have to restore all the surfaces. I do it like this:
// restore surfaces if necessary
if(lpdd)
{
if(lpddsprimary->IsLost()) // check if primary surface is lost
lpdd->RestoreAllSurfaces(); // restore all surfaces
}

lpdd is the DirectDraw object and lpddsprimary is my primary surface.

And if you have any little offscreen surfaces (like sprites) in video memory, you'll probably to have to reload them all, so you should have a function that loads all your graphics. Look up the message on this board called something like 'Restoring surfaces' for more info on that.

Good luck,
Al

Edited by - Bigshot on 2/15/00 5:11:21 PM
0

Share this post


Link to post
Share on other sites
Don't you specify what type of window you want / how it interacts with others when you create it with the CreateWindow or CreateWindowEx command.

You might find what you are after if you read the DirectInput Mouse tutorials (part of the DirectX SDK) which details both Exclusive and Non-Exclusive mode.

CooperativeLevel comes into it too, because you can specify this for the mouse and keyboard. You also have to make sure your window is handling messages either with Translate/Dispatch or in a WindowProc message handler.

Paulcoz.

Edited by - paulcoz on 2/16/00 2:30:34 AM
0

Share this post


Link to post
Share on other sites
Just handle WM_ACTIVATE messages in your WndProc. Set a flag for your rendering function to check before it renders each frame, telling it whether to draw or not. If your window''s minimized, you don''t draw. Finally, restore the surfaces in your WM_ACTIVATE handler when your window becomes active again. The Windows SDK docs have more information on WM_ACTIVATE.

Conceptually, you''re linking DirectDraw to your main window with that code.

And you''ll probably have to take extra steps for DirectInput, DirectSound, etc.

Good Luck!


- null_pointer
0

Share this post


Link to post
Share on other sites
Phew...I fixed it (finally) Runs nicely now...
tab-out, tab-in - I could to this for hours, seriously

So thanks to everyone here foir helping me out.

- Sleepwalker
0

Share this post


Link to post
Share on other sites