Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Prof-UIS General Discussion » MDI Tab Window Collapse All
Subject Author Date
James Hughes Sep 22, 2003 - 11:51 AM

Hi

I am using the MDI tab class (CExtTabMdiWnd). I want to be able to only display my MDI windows maximised, also want to be able to remove/disable the Restore, Minimize, Maxmize commands from the system menu (displayed when maximised).

Have found that by default, if you create the MDI windows maximised clicking the tab button always to another MDI window always show the window restored. Go around this by sub-classing the OnTabWndClickedItem virtual function and forcing the window to be maximised.

Cannot get the two mentioned system menu command removed.

Any help or suggestions on both these issue would be greatly appericated.

Thanks
James

Sergiy Lavrynenko Sep 23, 2003 - 2:04 AM

Hi,

I am using the MDI tab class (CExtTabMdiWnd). I want to be able to only display my MDI windows maximised, also want to be able to remove/disable the Restore, Minimize, Maximize commands from the system menu (displayed when maximized).

You should use your own class derived from CExtMenuControlBar and override the IsDisplayMdiDocumentButtons() virtual method like this:
      bool CMyMenuBar::IsDisplayMdiDocumentButtons() const
      {
         return false; // default implementation returns true :-)
      }


Have found that by default, if you create the MDI windows maximized clicking the tab button always to another MDI window always show the window restored. Go around this by sub-classing the OnTabWndClickedItem() virtual function and forcing the window to be maximized.

This is a bug of the standard MDI interface of Windows XP. You can see the same effect in any apps based on this standard MDI interface. For example, you can check when running Photo Editor of MS Office XP. Visual Studio .NET does not use this interface by default (in its tabbed mode). Invoke the menu Tools/Options, then select the tree item Environment/General, check the MDI Environment radio button, and restart Visual Studio .NET - it will use the standard MDI interface instead of its default tabbed interface. When switching between maximized MDI child frames, you can see the same flicker effect. The conclusion is: All advanced features of professional apps are always written from scratch :-)

Best regards, Sergiy.

Killaw aka Sensi Oct 3, 2003 - 10:00 PM

Hello Sergiy!

some dumb questions..
1) Could you tell us how you have fixed that flicker effect?
2) Will you include a "fixed" CExtTabMdiWnd in the next release?

Thanks you.
Best regards,
Killaw

Sergiy Lavrynenko Oct 4, 2003 - 2:35 AM

Hi Killaw,

I’m still not sure this bug should be fixed. I think the right way is to fake MDI environment like Visual Studio .NET does. May be, I will code a new sample dedicated to the MDI environment emulation.

Best regards, Sergiy.

James Hughes Sep 23, 2003 - 10:33 AM

Thanks once again for the help.