怎样让CEditView显示一个文本文件?如果是CRichEditView
1个回答
展开全部
按照如下的步骤生成一个例子程序。从主菜单 Dialog 中选择菜单项 File View Dialog,将会显示出一个对话框。点击按钮 Browse,并选择要查看的文本文件,当选择文件后,点击按钮 OK,便在对话框的编辑框中显示出所选择的文件的名字,点击按钮 Load,编辑框便立即显示出此文件。
用户可以标记或拷贝编辑框中的文本,试着执行一下会发现,还可以对编辑框中的文本进行编辑。点击核选框 Set Viewer Read Only 后,此功能便被删除,不过,依旧可以查看、标记或拷贝编辑框中的文本,只是不能修改而已。
实现例子程序的步骤如下:
1.在 Visual C++ 中利用 App Wizard 创建新的项目 LD92。进入 AppStudio,创建新的对话框,在对话框的顶端,添加标题为 View File 的静态文本域,在与此静态文本域相邻的右边,添加一个编辑框,然后,添加与这两个控制并排的按钮,标题为 &Browse。
2.在刚才添加的控制的下面,即对话框的中央,添加一个编辑框。从对话框中删除按钮 OK,并把按钮 Cancel 的标题设定为 Close,把按钮 Close 移到对话框底部的右下角。然后,设置多行编辑域的风格为:Multiline、Horizontal scroll、Vertial scroll、No hide selection 以及 Border。在编辑框的下面添加一个核选框(Check Box),在对话框的左下角添加一个按钮,设置其标题为 Load。
3.进入 ClassWizard,为对话框生成新的对话框类。把此类命名为 CFileViewDlg,接受该类的所有其它缺省值并保存此类。
4.进入 ClassWizard,从下拉列表中选择对象 CFileViewDlg,从对象列表中选择对象 IDC_BUTTON1,从消息列表中选择消息 BN_CLICKED,点击按钮 Add Function 添加新函数 OnBrowse。在 CFileViewDlg 的方法 OnBrowse 中添加下面的代码。
void CFileViewDlg::OnBrowse()
{
CFileDialog dlg(TRUE,"*.txt","*.txt");
if(dlg.DoModal()==IDOK)
{
CEdit * edit=(CEdit *)GetDlgItem(IDC_EDIT1);
edit->SetWindowText(dlg.GetPathName());
}
}
5.从对象列表中选择对象 IDC_BUTTON2,从消息列表中选择消息 BN_CLICKED,点击按钮 Add Function 添加新函数 OnLoad。在 CFileViewDlg 的方法 OnLoad 中添加下面的代码。
const MAX_BUFFER_LEN=256;
void CFileViewDlg::OnLoad()
{
char fileName[_MAX_PATH];
char buf[MAX_BUFFER_LEN+1];
CEdit * edit=(CEdit *)GetDlgItem(IDC_EDIT2);
GetDlgItem(IDC_EDIT1)->GetWindowText(fileName,_MAX_PATH);
FILE * fp=fopen(fileName,"r");
if(fp==(FILE *)NULL)
{
MessageBox("Unable to open file","Error",MB_OK);
return;
}
edit->SetWindowText("");
while(!feof(fp))
{
if(fgets(buf,MAX_BUFFER_LEN,fp)==NULL)
break;
if(strlen(buf))
buf[strlen(buf)-1]=0;
strcat(buf,"\r\n");
edit->SetFocus();
int idx=edit->GetWindowTextLength();
edit->SendMessage(EM_SETSEL,idx,idx);
edit->SendMessage(EM_REPLACESEL,0,(LPARAM)(LPCSTR)buf);
}
edit->SetSel(0);
fclose(fp);
}
6.从对象列表中选择对象 IDC_CHECK1,从消息列表中选择消息 COMMAND,点击按钮 Add Function 添加新函数 OnSetReadOnly。在 CFileViewDlg 的方法 OnSetReadOnly 中添加下面的代码。
void CFileViewDlg::OnSetReadOnly()
{
CButton * b=(CButton *)GetDlgItem(IDC_CHECK1);
GetDlgItem(IDC_EDIT2)->SendMessage(EM_SETREADONLY,
b->GetCheck(),0);
}
7.进入 AppStudio,添加标题为 Dialog 的主菜单,在此菜单上,添加标题为 File View Dialog、标识符为 ID_FILE_VIEW_DIALOG 的新的下拉菜单项。保存此菜单,退出 AppStudio。
8.在 ClassWizard 中,从对象列表中选择对象 ID_FILE_VIEW_DIALOG,从消息列表中选择消息 COMMAND,点击按钮 Add Function 添加新函数 。在此方法中添加下面的代码。
void CMainFrame::OnFileViewDlg()
{
CFileViewDlg dlg;
dlg.DoModal();
}
9.在文件 MainFrm 的顶部添加下列代码:
#include "FileViewDlg.h"
10.编译并运行此例子程序。
用户可以标记或拷贝编辑框中的文本,试着执行一下会发现,还可以对编辑框中的文本进行编辑。点击核选框 Set Viewer Read Only 后,此功能便被删除,不过,依旧可以查看、标记或拷贝编辑框中的文本,只是不能修改而已。
实现例子程序的步骤如下:
1.在 Visual C++ 中利用 App Wizard 创建新的项目 LD92。进入 AppStudio,创建新的对话框,在对话框的顶端,添加标题为 View File 的静态文本域,在与此静态文本域相邻的右边,添加一个编辑框,然后,添加与这两个控制并排的按钮,标题为 &Browse。
2.在刚才添加的控制的下面,即对话框的中央,添加一个编辑框。从对话框中删除按钮 OK,并把按钮 Cancel 的标题设定为 Close,把按钮 Close 移到对话框底部的右下角。然后,设置多行编辑域的风格为:Multiline、Horizontal scroll、Vertial scroll、No hide selection 以及 Border。在编辑框的下面添加一个核选框(Check Box),在对话框的左下角添加一个按钮,设置其标题为 Load。
3.进入 ClassWizard,为对话框生成新的对话框类。把此类命名为 CFileViewDlg,接受该类的所有其它缺省值并保存此类。
4.进入 ClassWizard,从下拉列表中选择对象 CFileViewDlg,从对象列表中选择对象 IDC_BUTTON1,从消息列表中选择消息 BN_CLICKED,点击按钮 Add Function 添加新函数 OnBrowse。在 CFileViewDlg 的方法 OnBrowse 中添加下面的代码。
void CFileViewDlg::OnBrowse()
{
CFileDialog dlg(TRUE,"*.txt","*.txt");
if(dlg.DoModal()==IDOK)
{
CEdit * edit=(CEdit *)GetDlgItem(IDC_EDIT1);
edit->SetWindowText(dlg.GetPathName());
}
}
5.从对象列表中选择对象 IDC_BUTTON2,从消息列表中选择消息 BN_CLICKED,点击按钮 Add Function 添加新函数 OnLoad。在 CFileViewDlg 的方法 OnLoad 中添加下面的代码。
const MAX_BUFFER_LEN=256;
void CFileViewDlg::OnLoad()
{
char fileName[_MAX_PATH];
char buf[MAX_BUFFER_LEN+1];
CEdit * edit=(CEdit *)GetDlgItem(IDC_EDIT2);
GetDlgItem(IDC_EDIT1)->GetWindowText(fileName,_MAX_PATH);
FILE * fp=fopen(fileName,"r");
if(fp==(FILE *)NULL)
{
MessageBox("Unable to open file","Error",MB_OK);
return;
}
edit->SetWindowText("");
while(!feof(fp))
{
if(fgets(buf,MAX_BUFFER_LEN,fp)==NULL)
break;
if(strlen(buf))
buf[strlen(buf)-1]=0;
strcat(buf,"\r\n");
edit->SetFocus();
int idx=edit->GetWindowTextLength();
edit->SendMessage(EM_SETSEL,idx,idx);
edit->SendMessage(EM_REPLACESEL,0,(LPARAM)(LPCSTR)buf);
}
edit->SetSel(0);
fclose(fp);
}
6.从对象列表中选择对象 IDC_CHECK1,从消息列表中选择消息 COMMAND,点击按钮 Add Function 添加新函数 OnSetReadOnly。在 CFileViewDlg 的方法 OnSetReadOnly 中添加下面的代码。
void CFileViewDlg::OnSetReadOnly()
{
CButton * b=(CButton *)GetDlgItem(IDC_CHECK1);
GetDlgItem(IDC_EDIT2)->SendMessage(EM_SETREADONLY,
b->GetCheck(),0);
}
7.进入 AppStudio,添加标题为 Dialog 的主菜单,在此菜单上,添加标题为 File View Dialog、标识符为 ID_FILE_VIEW_DIALOG 的新的下拉菜单项。保存此菜单,退出 AppStudio。
8.在 ClassWizard 中,从对象列表中选择对象 ID_FILE_VIEW_DIALOG,从消息列表中选择消息 COMMAND,点击按钮 Add Function 添加新函数 。在此方法中添加下面的代码。
void CMainFrame::OnFileViewDlg()
{
CFileViewDlg dlg;
dlg.DoModal();
}
9.在文件 MainFrm 的顶部添加下列代码:
#include "FileViewDlg.h"
10.编译并运行此例子程序。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询