- m_title = label ;
- if (m_hMenu)
- ModifyMenu((HMENU)m_hMenu, 0,
- MF_BYPOSITION | MF_STRING | MF_DISABLED,
- (UINT)-2, (const char *)m_title);
- else if (m_savehMenu)
- ModifyMenu((HMENU)m_savehMenu, 0,
- MF_BYPOSITION | MF_STRING | MF_DISABLED,
- (UINT)-2, (const char *)m_title);
+ bool hasNoTitle = m_title.IsEmpty();
+ m_title = label;
+
+ HMENU hMenu = GetHMENU();
+
+ if ( hasNoTitle )
+ {
+ if ( !label.IsEmpty() )
+ {
+ if ( !InsertMenu(hMenu, 0u, MF_BYPOSITION | MF_STRING,
+ (unsigned)idMenuTitle, m_title) ||
+ !InsertMenu(hMenu, 1u, MF_BYPOSITION, (unsigned)-1, NULL) )
+ {
+ wxLogLastError("InsertMenu");
+ }
+ }
+ }
+ else
+ {
+ if ( label.IsEmpty() )
+ {
+ // remove the title and the separator after it
+ if ( !RemoveMenu(hMenu, 0, MF_BYPOSITION) ||
+ !RemoveMenu(hMenu, 0, MF_BYPOSITION) )
+ {
+ wxLogLastError("RemoveMenu");
+ }
+ }
+ else
+ {
+ // modify the title
+ if ( !ModifyMenu(hMenu, 0u,
+ MF_BYPOSITION | MF_STRING,
+ (unsigned)idMenuTitle, m_title) )
+ {
+ wxLogLastError("ModifyMenu");
+ }
+ }
+ }
+
+#ifndef __WIN16__
+ // put the title string in bold face
+ if ( !m_title.IsEmpty() )
+ {
+ MENUITEMINFO mii;
+ mii.cbSize = sizeof(mii);
+ mii.fMask = MIIM_STATE;
+ mii.fState = MFS_DEFAULT;
+
+ if ( !SetMenuItemInfo(hMenu, (unsigned)idMenuTitle, FALSE, &mii) )
+ {
+ wxLogLastError("SetMenuItemInfo");
+ }
+ }
+#endif