我使用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后,它就可以正常的记住工具条的状态了。
请高手指点我上面的操作问题出在什么地方。十分感谢!
接下来我试验给这个程序在原来的基础上再加上一条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后,它就可以正常的记住工具条的状态了。
请高手指点我上面的操作问题出在什么地方。十分感谢!
感谢回复,我已经参考过那个源代码了,不过问题还是没有解决。