• Advertisement

Archived

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

Page flipping suppress even CtrlAltEsc

This topic is 6661 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

That's because GDI doesn't keep track of Flips, so it may write to the wrong memory.

Use FlipToGDI() to show message boxes, dialog boxes, etc.

Share this post


Link to post
Share on other sites
Advertisement
Yes I know of fliptoGDI but how to do that for assertions and the end task dialog when the Ctrl Alt Esc is pressed?

I tried trapping messages like WM_KILLFOCUS and such as to know when to call fliptoGDI but without much success. Any ideas there?

And does anyone actually have a video card that doesn't have the the CanRenderWindow capability?.

Share this post


Link to post
Share on other sites
That's weird, for system-modal dialogs, I usually get kicked out of full-screen mode, probably a driver thing.

3D-only add-ons, like Voodoo 1 and Voodoo 2 can't render to a window, and that's pretty much it.

Share this post


Link to post
Share on other sites
Why not debug your app in window mode?

As for the assertion dialogs, you can easily write your own assertion handling code - it's very simple (just take a look at assert.h to see how to structure the macros).

------------------
-vince


Share this post


Link to post
Share on other sites
I'm assuming you have the SDK? If so, check in the samples directory for DirectDraw. There's a little app there called fswindow. It displays a dialog box on top of the DDraw window. It can to for cards that support GDI or not. If you don't have the source, my email is mdat71@thrunet.com.

Share this post


Link to post
Share on other sites
Thanks ppl.. but the problem is not about debugging but more when it is complete (even if I could do my own messages dialogs, I think I would like to user to see the CtrlAltEsc dialog when the user wants to bail out).

Has anyone try pressing ctrl alt esc while your application is running?.. do it, cancel and repeat a few times, see what happens.

The only way it seems now is to call fliptoGDI in the loop but I wonder about the performance hit. must test it out first.

Share this post


Link to post
Share on other sites
oh yes.. ctrl alt delete..

Shucks.. keep posting wrong things these days. guess 10 hrs of sleep per day not enough 8).

Share this post


Link to post
Share on other sites
I am not sure that this will work but you can try something like this:

int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
lpCmdLine = lpCmdLine;
hPrevInstance = hPrevInstance;
if( !doInit( hInstance, nCmdShow ) )
{
return FALSE;
}
while( 1 )
{
updateFrame();
}
}

Share this post


Link to post
Share on other sites
Fuuny the post was not fully sent.

Anyway. I was saying if I place a fliptoGDI call after the flip, everything works but then the fliptoGDI function doubles the time it takes to just call flip.

then I tried trapping CtrlAltDelete in the message handle and do a flipToGDI there only..hmm.. that wouldn't solve the problem

Share this post


Link to post
Share on other sites
Have you tried setting the DDSCL_ALLOWREBOOT
cooperative level? According to the docs, it allows CTRL+ALT+DEL to work in full-screen mode.

Share this post


Link to post
Share on other sites
Hi,

Just found this problem with page flipping in directdraw. The directdraw has done such a good job of kicking windows of the screen that with the flip method, message boxes do not always show up. This includes the messageboxes where u set the MB_ICONERROR | MB_SYSTEMMODAL, assertions and even the End task dialog from Ctrl Alt Esc. They show out about half the time.

I notice in Starcraft, the end task dialog shows up always so makes me wonder if they are using page flipping or not? Can anyone use page flipping yet enabling the Ctrl Alt Esc to come out? If not, I'm sticking to off screen buffer.

Share this post


Link to post
Share on other sites
Oh yes. I have the flag set.

The problem is the End Task dialog box doesn't show up (most of the time) when I use the Flip method without putting a fliptoGDI afterwards. The docs doesn't say the dialog WILL definitely come up, does it?

If u press CtrlaltEsc twice, the system reboots so it's working but I cannot see that dialog.

Share this post


Link to post
Share on other sites

  • Advertisement