目前在SDI文档界面中作一个类似浮动的CDialogBar的类,是直接从CWnd派生的,
需要显示一个如Photoshop7.0中工具栏右上角一样的无标题栏的无模式对话框。
现在遇到的问题是只要一选中该对话框,主界面的标题栏就变灰了,如何能避免
这种非预期的结果???please told me

解决方案 »

  1.   

    微软自己的文档类程序界面中,主窗体和工具栏都可以始终保持激活状态,总不会也用的是该重绘技术吧?我看了一些例子,然后试了非模式对话框的各种ModifyWindow & ModifyWindowEx, ::SetForeGroundWindow, ::SetActiveWindow, SetWindowPos都没找到管用的。
    这好像也是同时激活两个窗体的问题吗?难道只有MDI可以吗?实在不行我重载CControlBAr好了。
      

  2.   

    不是“实在不行”,是的确如你所说的,很麻烦,还不如从CControlBar派生、重做来得快,而且地道
      

  3.   

    我又翻了翻MSDN和MFC原码,发现微软自己的工具栏在浮动状态(TBS_FLYBY)时,是由一个CMiniDocFrameWnd类将其包裹的,该类有CFrameWnd->CMiniFrameWnd派生,专门就是处理浮动工具条的。在CMiniDocFrameWnd的NC_ONCREATE & NC_ACTIVE中对二者进行同时激活的。
      

  4.   

    该类问题的完全解决之道:Docking Toolbars (Part 1)
    http://www.catch22.org.uk/tuts/docking1.asp
    就是借鉴MFC中浮动工具条的做法。