vc++ 做一个写字板时,如何实现保存和另存为的功能 以及标尺?

用mfccricheditview类创建的文本编辑器中保存后的文件没有特定的扩展名如何实现这一功能?还有就是如何添加标尺?谢谢!!... 用mfc cricheditview类创建的文本编辑器中保存后的文件 没有特定的扩展名 如何实现这一功能?
还有就是如何添加标尺?
谢谢!!
展开
 我来答
zmjdx
2007-01-29 · TA获得超过857个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:146万
展开全部
这是我写过的一个简单的写字板程序中的一段:
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里画就可以了吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式