资源管理器样式、单击左侧目录,右侧显示文件内容。
不用mfc的doc/view模式。
不用mfc的doc/view模式。
解决方案 »
- 大家说说学windows编程看过的书以及感受
- 新手提问MFC BUTTON CTRL的问题,怎么做默认不能按,满足条件之后才可以按?
- 工程文件破坏了,出现如下错误,是什么问题?
- 听说今天有位交大高材生来过,很NB,贴子在哪,我去“请教”
- 新手,关于CSocket的UDP编程的问题
- 生命的选择
- 在Windows 9x 及 2000/NT 下如何达到微秒级的计时?
- 如何添写注册表的默认项???????????
- 熟悉基本定义的高手请进
- 请问怎么利用Shell实现显示桌面
- 急!急!请问怎样才能使应用程序脱离开发环境独立运行??
- 基于对话框的打印,可以预览,可是打不出来,新手提问.谢谢.来者有分.高手帮忙啊!
我8懂
有时需要在应用程序的对话框中创建一个简单的文件阅读器用来显示一个不是很大(主要由版本信息组成)而且没有任何特别格式的文件,但又不为此编写需要处理滚动、绘制等工作的窗口对象。
那么,利用 Windows 9x API,是否有以最少的编码量来创建一个简单的文本阅读器的办法呢?方法
Windows 9x 与 Windows 3.x 中都具有显示小文件(数据小于 32KB)能力的多行编辑框,编辑框的功能在多数 Windows 应用程序中都未能很充分地描述,这里将进一步着重说明。通过利用通用对话框的某些功能以及多行编辑器,就能在几分钟之内创建出具备所有功能的文件阅览器对话框。步骤
按照如下的步骤生成一个例子程序。从主菜单 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.编译并运行此例子程序。
但是在用CRichEditCtrl显示rtf文件时应该怎么做呢?