| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1707 人关注过本帖
标题:自己加的“Open”按钮怎么没反应呢?
只看楼主 加入收藏
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
收藏
 问题点数:0 回复次数:7 
自己加的“Open”按钮怎么没反应呢?
想在程序中另外再加一个按钮Open来打开文件,把OpenDoc函数下的代码复制过去以后,却没有相同的效果,添加的Open在关闭windows的“打开文件”对话框以后就没反应了,仔细观察了一下,classwizard生成的OpenDoc是BOOL型的,在完成OpenDoc之后程序是不是还会再调用一些别的默认的函数?
搜索更多相关主题的帖子: Open 按钮 windows 对话框 BOOL 
2006-10-14 09:44
眼底星空
Rank: 4
等 级:业余侠客
威 望:3
帖 子:85
专家分:289
注 册:2006-9-2
收藏
得分:0 
不态明白你的意思
你指的是OpenDocument函数?
你可以重写这个虚函数,实现你自己需要的东西

无为而为 && 每天进步一小点...
2006-10-14 13:28
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
收藏
得分:0 

我在程序里加了一个“打开样图”的菜单,希望从这里打开图形文件,没有实现,如果在classwizard自己生成的OpenDocument里就没问题,这是我的代码,是不是还要加点什么????
BOOL CMyWorkDoc::OnOpenDocument(LPCTSTR lpszPathName) ///这个函数可以打开图形文件
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;

OFSTRUCT of;
HANDLE hFile=NULL;
hFile=(HANDLE)OpenFile(lpszPathName,&of,OF_READWRITE|OF_SHARE_COMPAT);
TRACE(lpszPathName);
if(hFile!=(HANDLE)HFILE_ERROR)
{
TRACE("SHAN CHU\n");
DWORD dwHighWord=NULL;
DWORD dwSizeLow=GetFileSize(hFile,&dwHighWord);
DWORD dwFileSize=dwSizeLow;
TRACE("dwFileSize=%d\n",dwFileSize);
if(dwFileSize==0)
{
TRACE("DA KAI\n");
POSITION viewPos=this->GetFirstViewPosition();
CMyWorkView* MyView=(CMyWorkView*)this->GetNextView(viewPos);
MyView->m_ObjectList.RemoveAll();
}
}
::CloseHandle(hFile);

return TRUE;
}

void CMyWorkDoc::On_MenuPicture_Read()///一样的代码在这里就不可以了
{
CFileDialog dlg(TRUE,"pic","*.pic");
if(dlg.DoModal()==IDOK)
{
OFSTRUCT of;
HANDLE hFile=NULL;
hFile=(HANDLE)OpenFile(dlg.GetPathName(),&of,OF_READWRITE|OF_SHARE_COMPAT);
if(hFile!=(HANDLE)HFILE_ERROR)
{

DWORD dwHighWord=NULL;
DWORD dwSizeLow=GetFileSize(hFile,&dwHighWord);
DWORD dwFileSize=dwSizeLow;
TRACE("dwFileSize=%d\n",dwFileSize);

if(dwFileSize==0)
{

POSITION viewPos=this->GetFirstViewPosition();
CMyWorkView* MyView=(CMyWorkView*)this->GetNextView(viewPos);
MyView->m_ObjectList.RemoveAll();
}
}
::CloseHandle(hFile);
CFile file;
// VERIFY(file.Open(dlg.GetPathName(),CFile::modeRead));
file.Open(dlg.GetPathName(),CFile::modeRead);

file.Close();

}


生活充满阳光,快乐无处不在
2006-10-14 14:16
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
收藏
得分:0 
是不是要调用void CMyWorkDoc::Serialize(CArchive& ar)????

生活充满阳光,快乐无处不在
2006-10-14 14:17
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

你可以看看MFC程序设计,关于文档和视图这一章

[此贴子已经被作者于2006-10-14 19:38:27编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-14 17:35
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
收藏
得分:0 

我不想用CDocument::OnOpenDocument(lpszPathName)这个函数,如果要实现和他相同的功能还要添加哪些呢?


生活充满阳光,快乐无处不在
2006-10-14 19:40
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
收藏
得分:0 


虽然不是很明白怎么回事,但是实现了我要的效果,可以读入文件了

void CMyWorkDoc::On_MenuPicture_Read()
{
static char szFilter[]="PIC Files(*.pic)|*.pic||";
CFileDialog FileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFilter);
CString filename;
if(FileDlg.DoModal()==IDOK)
{
filename=FileDlg.GetPathName();
}
OFSTRUCT of;
HANDLE hFile=NULL;
hFile=(HANDLE)OpenFile(filename,&of,OF_READWRITE|OF_SHARE_COMPAT);
if(hFile!=(HANDLE)HFILE_ERROR)
{
DWORD dwHighWord=NULL;
DWORD dwSizeLow=GetFileSize(hFile,&dwHighWord);
DWORD dwFileSize=dwSizeLow;
TRACE("dwFileSize=%d\n",dwFileSize);

if(dwFileSize==0)
{
POSITION viewPos=this->GetFirstViewPosition();
CMyWorkView* MyView=(CMyWorkView*)this->GetNextView(viewPos);
MyView->m_ObjectList.RemoveAll();
}
}
::CloseHandle(hFile);

CFile file;
CFileException fe;
//以读方式打开文件
if(!file.Open(filename,CFile::modeRead,&fe))
{
fe.ReportError();
return;
}

//构建CArchive 对象
CArchive ar(&file,CArchive::load);
Serialize(ar);
ar.Close();
file.Close();
CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
CMyWorkView *pView=(CMyWorkView *)pMain->GetActiveView();

pView->Invalidate();
}


生活充满阳光,快乐无处不在
2006-10-19 22:08
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
收藏
得分:0 

这样更简单,直接调用CDocument::OnOpenDocument
void CMyDrawDoc::OnMENUITEMReadPic()
{
static char szFilter[]="PIC Files(*.liu)|*.liu||";
CFileDialog FileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFilter);
CString filename;
if(FileDlg.DoModal()==IDOK)
{
filename=FileDlg.GetPathName();
}
//定义文件对象和文件异常对象
CDocument::OnOpenDocument(filename) ;
CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
CMyDrawView *pView=(CMyDrawView *)pMain->GetActiveView();

pView->Invalidate();

}


生活充满阳光,快乐无处不在
2006-10-19 22:19
快速回复:自己加的“Open”按钮怎么没反应呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029469 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved