■■■使含有若干CWnd/Modeless Dialog的文档主窗口界面与子窗体始终保持同步激活状态的解决方案
trt 2003-08-23 02:25:33 ■■■使含有若干CWnd/Modeless Dialog的文档主窗口界面与子窗体始终保持同步激活状态的解决方案
目前在SDI文档界面中作一个类似浮动的CDialogBar/CToolBar的类,是直接从CWnd派生的,
需要显示一个如MFC中CControlBar类的浮动的无模式对话框。
但遇到的问题是只要一选中该对话框,主界面的标题栏就变灰了,如何能避免
这种非预期的结果?
微软自己的文档类程序界面中,主窗体和工具栏都可以始终保持激活状态。我又翻了翻MSDN和MFC原码,发现微软自己的工具栏在浮动状态(TBS_FLYBY)时,是由一个CMiniDocFrameWnd类将其包裹的,该类有CFrameWnd->CMiniFrameWnd派生,专门就是处理浮动工具条的。在CMiniDocFrameWnd的NC_ONCREATE & NC_ACTIVE中对二者进行同时激活的。
最后,该类问题的完全解决之道:
Docking Toolbars (Part 1)
http://www.catch22.org.uk/tuts/docking1.asp
就是借鉴MFC中浮动工具条的做法,处理这类消息并向相关窗体发送。