在mfc的文档/视图结构中,缺省就会产生
打开文件对话框。在资源文件中:
IDR_YOURFRAME
"YourFrame\n" //application window caption
"\n" //root for default document name (Untitled)
"YourFrame\n" //document type name
"YourFrame Files(*.txt)\n" //document type description and filter
".txt\n" //extension for documents of this type
"YourFrame.Document\n" //Registry file type ID
"YourFrame Document" //Registry file type description这样.txt就会自动加入到文件过滤器中。
但是我想
要向这个打开文件对话框中多加几种文件扩展名,该
怎么办?”
比如.bmp .jpg
打开文件对话框。在资源文件中:
IDR_YOURFRAME
"YourFrame\n" //application window caption
"\n" //root for default document name (Untitled)
"YourFrame\n" //document type name
"YourFrame Files(*.txt)\n" //document type description and filter
".txt\n" //extension for documents of this type
"YourFrame.Document\n" //Registry file type ID
"YourFrame Document" //Registry file type description这样.txt就会自动加入到文件过滤器中。
但是我想
要向这个打开文件对话框中多加几种文件扩展名,该
怎么办?”
比如.bmp .jpg
解决方案 »
- MFC对话框-按钮背景透明
- sendto引发的sendto函数引发0xC0000005: Access Violation.
- vc打印页边距怎么设置?
- 请大家推荐一些Windows服务器开发方面的书或资料!
- 请问ActiveX controls event发出的消息怎样在container里接收
- 各位,怎麼用SoftIce(V2.7)來Debug Release版的程序,我用Loader后,程序沒有被攔截,而是自己在正常運行!!!
- 问个关于CStrng.Mid的小问题
- 为什么创建套接字报错?sListen=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
- 想录下屏幕动作作一软件的演示DEMO,用什么软件做呢??
- 听说这里会学到很多东西
- 进来吧!!!sucker(【^_^】)
- 如何在ATL复合控件上动态添加一些控件??
1 你可以用SDI框架实现,一个Document多个View.在Document打开文件时,你可以根据
文件扩展名去读不同格式的文件,并保存数据并标识出是哪一种数据类型,在view中显
示时,这就可以动态地去选择.
不用定义多个文档,只定义一个就行了,在资源管理器中建立多个view,在insert source中插入IDD_FORMVIEW就是了,然后建立一个全局变量,这个变量决定你新打开一个文档时用那个view,如下:
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
extern int isview ;
if (isview == 0 ) {
return CMDIChildWnd::OnCreateClient(lpcs, pContext); //classwizard 自动建立的第一个View
}
if ( isview == 2 ) {
pContext->m_pNewViewClass = RUNTIME_CLASS(report1);//你自己后来新建立的view
return CMDIChildWnd::OnCreateClient(lpcs, pContext);
}
return true ;
}2 用MDI框架实现,其实这也挺简单的.因为MDI可以支持多个文档模板.这样打开不同的
数据文件时,你可以用不同的文档模板去打开.找几个简单例子看看就知道了.其实两种途径你都可以选,关键是那一种界面更适合你.
实现
APP类的InitInstance()函数中有如下代码:
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_MY12STYPE,
RUNTIME_CLASS(CMy12sDoc),
RUNTIME_CLASS(CChildFrame),
RUNTIME_CLASS(CMy12sView));
AddDocTemplate(pDocTemplate);
以上代码就是添加一个文档模板,你可以按自己的要求随意添加:
如:
pDocTemplate = new CMultiDocTemplate(
IDR_OTHERTYPE, //相关菜单,自己新建
RUNTIME_CLASS(COtherDoc), //新建文档类
RUNTIME_CLASS(COtherChildFrame), //新建子框架类
RUNTIME_CLASS(COtherView)); //新建视图类
AddDocTemplate(pDocTemplate);
重载OnFileOpenvoid CXXXXApp::OnFileOpen()
{
static char BASED_CODE szFilter[] = "All Image Files|*.bmp;*.DIB;*.pcx;*.tif;*.gif;|*.BMP Windows Bitmap(*.bmp;*.DIB)|*.bmp;\
*.DIB|PCX PCX(*.pcx)|*.pcx;|TIFF Tag Image File Format(*.tif)|*.tif|GIF CompuServe GIF|*.gif|All Files (*.*)|*.*||";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter,NULL);
if (dlg.DoModal() != IDOK) return;
if(!OpenDocumentFile(dlg.m_ofn.lpstrFile))
AfxMessageBox("Read Error!");
}
*.DIB|PCX PCX(*.pcx)|*.pcx;|TIFF Tag Image File Format(*.tif)|*.tif|GIF CompuServe GIF|*.gif|All Files (*.*)|*.*||";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter,NULL);
我同意你的说法!!
pDocTemplate = new CMultiDocTemplate(
IDR_OTHERTYPE, //相关菜单,自己新建
RUNTIME_CLASS(COtherDoc), //新建文档类
RUNTIME_CLASS(COtherChildFrame), //新建子框架类
RUNTIME_CLASS(COtherView)); //新建视图类
AddDocTemplate(pDocTemplate);
我想
RUNTIME_CLASS(COtherChildFrame), //新建子框架类
RUNTIME_CLASS(COtherView)); //新建视图类
就用原来的就可以了吧,而RUNTIME_CLASS(COtherDoc)是否要加入新的doc类呢?以及其他地方需要做什么修改吗?