Remove system menu from floating toolbar

CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

When a toolbar floats, the MFC framework normally supplies a window menu (formerly
known as system menu) to the toolbar. The toolbar can be floated by a double click or by
dragging it to the center of the screen. This code demonstrates how to do it.

Note: I could not get the mini frame window to repaint. So I had to first hide and then
show the toolbar to achieve the same effect. I tried UpdateWindow, SetWindowPos,
MoveWindow etc. Suggestions welcome.

1. Derive your own toolbar CMyToolBar from CToolBar and update the m_wndToolBar member
in the main frame.

2. In CMyToolBar::OnLButtonDblClk(…), add the following:


	CToolBar::OnLButtonDblClk(...); //fill the parameters 

	if (IsFloating()) //is toolbar floating
	{
		CWnd* pMiniFrame;
		CWnd* pDockBar;

		pDockBar = GetParent();
		pMiniFrame = pDockBar->GetParent();

		//get rid of window menu
		pMiniFrame->ModifyStyle(WS_SYSMENU, NULL);

		//extreme way of re-painting the toolbar
		pMiniFrame->ShowWindow(SW_HIDE);
		pMiniFrame->ShowWindow(SW_SHOW);
	}

3. Repeat same code in OnLButtonDown(…) and elsewhere.

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read