我使用VC6的APPWIZARD生成一个SDI程序,在最后一步把VIEW的基类改成CRichEditView,结果程序生成后运行就会出现Assert错误,改成Release后没有问题。不知是何原因?改用VC7.NET Beta 2没有这样的问题。
    接下来我试验给这个程序在原来的基础上再加上一条ToolBar,我先建立一个新的TOOLBAR资源,然后给CMainFrm类加一个protected的成员CToolBar  m_wndMyBar;然后在OnCreate加上下面的句子:
if (!m_wndMyBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndMyBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("Failed to create toolbar\n");
return -1;      // fail to create
}
m_wndMyBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndMyBar);
    目前为止还没有任何问题。
    为了能让程序记住工具条的状态。我在OnCreate的最后加上
        LoadBarState(_T("MainBarState"));
    同时加上WM_CLOSE的响应函数OnClose();
        SaveBarState(_T("MainBarState"));
    这时就出现问题了,程序“记住”了工具条的状态,可惜经常记错。更严重的是当把两条工具条都拖到浮动时,关闭程序,再运行程序就会出现Assert错误。必须到注册表删掉相应的键值才能重新运行程序。
    另一方面,MS随VC发布的WordPad示例程序也没有记住工具条状态的功能,但我给它的程序加上LoadBarState和SaveBarState后,它就可以正常的记住工具条的状态了。
    请高手指点我上面的操作问题出在什么地方。十分感谢!

解决方案 »

  1.   

    MSDN中有写字板的源代码,建议你看看那个
      

  2.   

    To idoloveyou:
    感谢回复,我已经参考过那个源代码了,不过问题还是没有解决。
      

  3.   

    我估计是我在多生成ToolBar的代码中出了什么问题。请高手指点!
      

  4.   

    我估计是我在多生成ToolBar的代码中出了什么问题。请高手指点!
      

  5.   

    CToolBar::CreateEx函数后面还有一个ID参数你没有指定,指定一个自定义的值即可解决你的问题,参考一下MSDN