Jump to content

  • Log In with Google      Sign In   
  • Create Account


Page flipping suppress even CtrlAltEsc


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
12 replies to this topic

#1 Void   Members   -  Reputation: 126

Like
Likes
Like

Posted 27 October 1999 - 06:02 PM

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.



Sponsor:

#2 mhkrause   Members   -  Reputation: 122

Like
Likes
Like

Posted 23 October 1999 - 08:34 PM

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.


#3 Void   Members   -  Reputation: 126

Like
Likes
Like

Posted 24 October 1999 - 05:00 AM

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?.


#4 mhkrause   Members   -  Reputation: 122

Like
Likes
Like

Posted 24 October 1999 - 06:31 AM

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.


#5 vince   Members   -  Reputation: 122

Like
Likes
Like

Posted 24 October 1999 - 05:25 PM

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




#6 Aldacron   GDNet+   -  Reputation: 3057

Like
Likes
Like

Posted 24 October 1999 - 05:59 PM

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.

#7 Void   Members   -  Reputation: 126

Like
Likes
Like

Posted 25 October 1999 - 03:43 AM

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.


#8 Aldacron   GDNet+   -  Reputation: 3057

Like
Likes
Like

Posted 25 October 1999 - 05:26 AM

Do you mean CTL/ALT/DELETE?



#9 Void   Members   -  Reputation: 126

Like
Likes
Like

Posted 25 October 1999 - 08:07 PM

oh yes.. ctrl alt delete..

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


#10 Drki   Members   -  Reputation: 122

Like
Likes
Like

Posted 25 October 1999 - 10:37 PM

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();
}
}


#11 Void   Members   -  Reputation: 126

Like
Likes
Like

Posted 26 October 1999 - 06:19 PM

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


#12 mhkrause   Members   -  Reputation: 122

Like
Likes
Like

Posted 27 October 1999 - 08:13 AM

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


#13 Void   Members   -  Reputation: 126

Like
Likes
Like

Posted 27 October 1999 - 06:02 PM

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.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS