在编写文档视图结构的程序,举个具体的例子吧:
建立一个单文档应用程序,最后一步View派生自CEditView,然后这个程序就可以运行了,并且可以完成基本的文字输入等工作。
问题是:
1.
工具栏里的 保存 按钮并没有去判断 视图 中有没有内容,也就是说,不管在视图中是否有内容,保存 按钮 总是可以使用的,如何能根据视图中是否有内容来改变保存按钮的使能状态呢(即,如果在VIEW中输入内容,“保存”按钮 可用,VIEW中输入内容,“保存”按钮 不可用)
至于,执行“新建”和“打开”操作时,VC内部会自动去判断View中是否有内容,如果有,就提示"是否要保存文档"
2.
如何改变打开文件是在文件对话框里的文件扩展名:a,可以通过修改资源里的String Table里的ID对应的入口串;b,可以重载ID_FILE_OPEN的命令响应函数,然后在这里实现文件打开对话框,然后设置对话框的过滤属性。 那么还有别的方法吗?
这两种做法有何分别?
3.
就是针对上面的一些迷惑,我应该看哪些书呢?或者我可以从哪本书中找到答案 以及 真正地去学会用VC的文档/视图结构开发程序呢(当然,并不是说一定要去理清楚VC文档/结构的实现,如果让我现在去完全弄清楚这些,我觉得没有可能)
建立一个单文档应用程序,最后一步View派生自CEditView,然后这个程序就可以运行了,并且可以完成基本的文字输入等工作。
问题是:
1.
工具栏里的 保存 按钮并没有去判断 视图 中有没有内容,也就是说,不管在视图中是否有内容,保存 按钮 总是可以使用的,如何能根据视图中是否有内容来改变保存按钮的使能状态呢(即,如果在VIEW中输入内容,“保存”按钮 可用,VIEW中输入内容,“保存”按钮 不可用)
至于,执行“新建”和“打开”操作时,VC内部会自动去判断View中是否有内容,如果有,就提示"是否要保存文档"
2.
如何改变打开文件是在文件对话框里的文件扩展名:a,可以通过修改资源里的String Table里的ID对应的入口串;b,可以重载ID_FILE_OPEN的命令响应函数,然后在这里实现文件打开对话框,然后设置对话框的过滤属性。 那么还有别的方法吗?
这两种做法有何分别?
3.
就是针对上面的一些迷惑,我应该看哪些书呢?或者我可以从哪本书中找到答案 以及 真正地去学会用VC的文档/视图结构开发程序呢(当然,并不是说一定要去理清楚VC文档/结构的实现,如果让我现在去完全弄清楚这些,我觉得没有可能)
但我认为 {使"保存"按钮不可用没有意义的} 这句话不是很合理,因为有些时候是需要这样做的。那请问如何 自己控制 "保存"按钮 的状态,使它失效或有效? 默认好象是这些按钮什么时候都有效。
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(FALSE);
}
对了,还有两个问题:不管是单文档还是多文档程序,默认情况下,程序启动后就有一个新的文档,有什么函数能禁止这个做法吗?
再就是,如何根据视图(我的视图派生于CRichEditView)中是否有内容,来使能ID_FILE_SAVE呢?
是判断文档内容是否有变化吗?
多文档的话,肯定有方法。从网上查一下应该可以找的到的。对于第二个问题,写成下面的样子就OK了
void CTestDocDoc::OnUpdateFileSave(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CString str;
((CEditView*)m_viewList.GetHead())->GetEditCtrl().GetWindowText(str); if ("" == str || !IsModified())
{
pCmdUI->Enable(FALSE);
}
else
{
pCmdUI->Enable(TRUE);
}
}