• Advertisement
Sign in to follow this  

Messageboxes, tabcontrols, directx oh my

This topic is 1592 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

tl,dr: What windowstyles/functions can i use to force a message box to display over directx render windows.

 

In my current project, I've got a main window, a tab control, a child window for the tab, and it has a child window with a directx swapchain bound to it.

hwndmain
-htab
-htabview1
--h3dview (has directx swapchain)


When the user wants to open a file, I check to see if one is open, and if so pop open a message box to ask if they would like to save the current file. This message box does not pop up over of the childwindow with the swapchain. It will appear if any other tab window is showing,however, eventually each tab will have 1 or more swapchains attached to it. If i press a key that the Messagebox responds to(such as escape or alt) then it is drawn correctly.

Edited by Burnt_Fyr

Share this post


Link to post
Share on other sites
Advertisement

If your having issues with fullscreen render modes and message boxes, look here. From what i've read, it will not help me with windowed swapchains

Share this post


Link to post
Share on other sites

If you are using WinApi then look at that : http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspx

 

---->

 

WS_CLIPCHILDREN 0x02000000L

Excludes the area occupied by child windows when drawing occurs within the parent window. This style is used when creating the parent window.

 

That should work because winapi widgets are actually child wnds.

Share this post


Link to post
Share on other sites

If you are using WinApi then look at that : http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspx

 

---->

 

WS_CLIPCHILDREN 0x02000000L

Excludes the area occupied by child windows when drawing occurs within the parent window. This style is used when creating the parent window.

 

That should work because winapi widgets are actually child wnds.

Clipchildren is already specified for hwndMain, and the message box appears fine on any tab except the one containing the window with the d3dswapchain. And in win32, there are no "widgets", windows, and controls only

Share this post


Link to post
Share on other sites
The WS_CLIPCHILDREN option didn't work for me.
I now simply call ShowWindow(..., SW_MINIMIZE);, this works for my needs (including ShowCursor(true)

Share this post


Link to post
Share on other sites

The WS_CLIPCHILDREN option didn't work for me.
I now simply call ShowWindow(..., SW_MINIMIZE);, this works for my needs (including ShowCursor(true)

did you read the link i posted for you?

Share this post


Link to post
Share on other sites

::SetDialogBoxMode does not require child windows, so should allow message boxes to popup over your fullscreen d3dwindow

Share this post


Link to post
Share on other sites

Looking at some other projects, it seems that my test project with multiple swapchains has the same issue, so it is unlikely related to the tabcontrol.

Share this post


Link to post
Share on other sites

I've now narrowed down the problem to just a single child window. I've got a test project that creates a main window, and a child window, my renderer is coupled to the child window, and I cannot get a message box to show above the window.

Share this post


Link to post
Share on other sites

This thread pointed me to a solution. I was not using begin/end paint, which caused windows to do... something. I'm still not 100% sure what was going on, as I don't see how it would  have affected z order. Can someone with some more experience shed some light?

Edited by Burnt_Fyr

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement