CToolBars
Mario Contestabile -- Mario_Contestabile.UOS__MTL@UOSMTL2.universal.com Monday, July 15, 1996 Env: MSVC 4.1 Win95 NT 3.51 My last post dealt with using LoadBarState()/SaveBarState() with a heap based toolbar. Although that question still stands, it has been brought to my attention that these APIs apparently are bugged as of MSVC 4.1? Is this the case? Apparently they increase the size of the registry file with each call. At any rate, I'm trying to capture when the user closes the toolbar (small 'x' in top right corner). This was discussed on this list a while ago (see www.visionx.com/mfcpro/mfc-l/dce507.htm). The previous suggestion that your CToolBar derived class should handle ON_WM_CLOSE() does not work for me. Note my toolbar is new'ed, it is not simply a m_ToolBar member in my mainframe class. The toolbar's OnDestroy() is only called when the mainframe, who is the parent, is destroyed [exit app]. The m_bAutoDelete public CToolBar member is set to true, so I don't have to delete the allocated toolbar. I thought that setting that member would call OnDestroy() when the toolbar is closed, but it isn't the case. Anybody accomplish this? mcontest@universal.com
Douglas Earl -- dae@Rational.COM Thursday, July 18, 1996 [Mini-digest: 3 responses] Mario Contestabile wrote:> > > At any rate, I'm trying to capture when the user closes the toolbar (small 'x' > in top right corner). > This was discussed on this list a while ago (see > www.visionx.com/mfcpro/mfc-l/dce507.htm). > The previous suggestion that your CToolBar derived class should handle > ON_WM_CLOSE() does not work for me. Note my toolbar is new'ed, it is not Toolbars don't get WM_CLOSED when the user closes it via the small x, rather they just get hidden. -----From: Bill McGarry Well, I can answer this half of the question. Yes, the problem still exists in MFC 4.1 but Microsoft did come up with a fix which I have been using with no problems so far. The fix is to clean up the data structures before they are saved to the .ini file or registry. The fix is in the Knowledge Base (ID #151446). Here's the URL to take you directly to the article: http://www.microsoft.com/kb/developr/visual_c/q151446.htm Hope this helps! Bill McGarry Olivetti North America billm@mail.spk.olivetti.com -----From: "Greg Tighe" Mario, The following works for me (at least under Win95:) 1) Derive a class from CMiniDockFrameWnd (defined in afxpriv.h.) Add a WM_CLOSE message handler to this class. 2) In CYourMainFrame class (presumably in OnCreate()) add the following line after your call to EnableDocking(): m_pFloatingFrameClass = RUNTIME_CLASS(CMyMiniDock); CMyMiniDock::OnClose() will be called whenever the (floating) toolbar is close by clicking on the 'x' in the upper right corner. Beware that this method uses undocumented features of MFC 4.1 - standard disclaimer applies. -Greg Tighe Applied Intelligent Systems, Inc. Ann Arbor, MI gdt@aisinc.com
| Вернуться в корень Архива |