vc++ 做一个写字板时,如何实现保存和另存为的功能 以及标尺?
用mfccricheditview类创建的文本编辑器中保存后的文件没有特定的扩展名如何实现这一功能?还有就是如何添加标尺?谢谢!!...
用mfc cricheditview类创建的文本编辑器中保存后的文件 没有特定的扩展名 如何实现这一功能?
还有就是如何添加标尺?
谢谢!! 展开
还有就是如何添加标尺?
谢谢!! 展开
1个回答
展开全部
这是我写过的一个简单的写字板程序中的一段:
void CNotepad2Dlg::OnMenuitemOpen()
{
// TODO: Add your command handler code here
if(!SaveWhenModified())
return;
CString fileName; //打开的文件名
//文件过滤器,打开文件时,文件列表中只出现过滤后的文件
static char szFilter[] = "文本文件 (*.txt)|*.txt|Rich Text Format (*.rtf)|*.rtf|全部文件 (*.*)|*.*||";
CFileDialog cfDlg(TRUE,NULL,"*.txt",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter,this);
if(cfDlg.DoModal() == IDOK)
m_fileName = cfDlg.GetFileName();
else
return;
//检查文件类型
int pos = m_fileName.Find(".",0);
CString fileType = m_fileName.Mid(pos+1,3);
//打开文件
HANDLE hFile;
hFile = CreateFile((LPCSTR)m_fileName,GENERIC_READ,0,0,OPEN_EXISTING,0,0);
if(hFile == NULL){//打开失败
AfxMessageBox("文件打开失败!");
return;
}
//创建EDITSTREAM结构体
EDITSTREAM EStream;
EStream.dwCookie = (DWORD)hFile;
EStream.dwError = 0;
EStream.pfnCallback = (EDITSTREAMCALLBACK)EditStreamCallback;
//读入数据到编辑控件中
m_edit->SetSel(0,-1);
if(fileType.CompareNoCase("txt") == 0){
m_edit->StreamIn(SF_TEXT|SFF_SELECTION,EStream);
m_bModified = FALSE;
}
else if(fileType.CompareNoCase("rtf") == 0){
m_edit->StreamIn(SF_RTF|SFF_SELECTION,EStream);
m_bModified = FALSE;
}
else{//文件格式不支持
CString err;
err.Format("文件格式 .%s不支持",fileType);
AfxMessageBox(err);
return;
}
CloseHandle(hFile);
}
希望能帮得上你.
添加标尺应该就在CRichEditView里的OnPaint里画就可以了吧
void CNotepad2Dlg::OnMenuitemOpen()
{
// TODO: Add your command handler code here
if(!SaveWhenModified())
return;
CString fileName; //打开的文件名
//文件过滤器,打开文件时,文件列表中只出现过滤后的文件
static char szFilter[] = "文本文件 (*.txt)|*.txt|Rich Text Format (*.rtf)|*.rtf|全部文件 (*.*)|*.*||";
CFileDialog cfDlg(TRUE,NULL,"*.txt",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter,this);
if(cfDlg.DoModal() == IDOK)
m_fileName = cfDlg.GetFileName();
else
return;
//检查文件类型
int pos = m_fileName.Find(".",0);
CString fileType = m_fileName.Mid(pos+1,3);
//打开文件
HANDLE hFile;
hFile = CreateFile((LPCSTR)m_fileName,GENERIC_READ,0,0,OPEN_EXISTING,0,0);
if(hFile == NULL){//打开失败
AfxMessageBox("文件打开失败!");
return;
}
//创建EDITSTREAM结构体
EDITSTREAM EStream;
EStream.dwCookie = (DWORD)hFile;
EStream.dwError = 0;
EStream.pfnCallback = (EDITSTREAMCALLBACK)EditStreamCallback;
//读入数据到编辑控件中
m_edit->SetSel(0,-1);
if(fileType.CompareNoCase("txt") == 0){
m_edit->StreamIn(SF_TEXT|SFF_SELECTION,EStream);
m_bModified = FALSE;
}
else if(fileType.CompareNoCase("rtf") == 0){
m_edit->StreamIn(SF_RTF|SFF_SELECTION,EStream);
m_bModified = FALSE;
}
else{//文件格式不支持
CString err;
err.Format("文件格式 .%s不支持",fileType);
AfxMessageBox(err);
return;
}
CloseHandle(hFile);
}
希望能帮得上你.
添加标尺应该就在CRichEditView里的OnPaint里画就可以了吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询