您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:174 来源:vckbase.com

可以替代系统记事本的程序
作者:杨立刚

下载示例工程
逆风者

代码运行效果图如下:


本人在网上搜VC制作记事本的源代码时,发现没有VC做的,看来不能偷懒,只能自己来做。至于为什么非得自己做个替代系统的记事本,待我做完再说。本人模仿的是Win2K下的记事本。

首先建立基于类CEditView的单文档的工程Notepad,注意在MFC-AppWizard Step-4的Advanced中设定扩展名为txt。去掉工具栏(系统记事本里也没有),菜单按照系统的记事本来设计,并且ID用VC自带的设置,如“复制”ID为ID_EDIT_COPY。自己要加入字体的设置:
向CNotepadeView之中添加CFont类型的成员变量m_Font。为WM_CREATE消息添加映射函数。为记事本视图设置默认字体,代码如下:

CEdit& edit = GetEditCtrl();	//定义指向视图的Cedit控件

if (m_Font.m_hObject == NULL)

{

     m_Font.CreatePointFont(120,"Fixedsys");

}

if (m_Font.m_hObject != NULL)

	edit.SetFont (&m_Font);

edit.SetTabStops (16);
在格式菜单的字体里,使用通用字体对话框CfontDialog类,代码如下:
void CNotepadeView::OnFormatFont() 

{

	LOGFONT lf;

	CFont *font=this->GetEditCtrl().GetFont(); //得到当前字体

	if(font==NULL)	//当前无字体,创建默认的字体

	{

		font =new CFont;

		font->CreatePointFont(120,"Fixedsys");

		font->GetLogFont(&lf);

		delete font;

	}

	else

	{

		font->GetLogFont(&lf);

	}

	CFontDialog cf(&lf);

	if(cf.DoModal()==IDOK)

	{

		this->m_Font.DeleteObject();



		this->m_Font.CreateFontIndirect(&lf);

		this->SetFont(&this->m_Font);

	}

}
接下来,就是要系统的记事本下岗,在CNotepadeApp::InitInstance()里修改注册表,关联TXT文件。运行一下,与系统的好像一样哎。剩下的就是做帮助菜单里的关于对话框和图标一些修饰的工作,大家可以参考源程序。
至于本人为什么要替换系统的记事本,主要是我在绑定两个文件的时候(别往歪里想,不含木马),发现金山毒霸2003总是报发现病毒(本来就是没有),于是就想到了很小的记事本,在资源里加入另外的文件......,爱搞破坏的读者别往歪里想哦。希望本程序能对大家有所帮助。
相关文章

论程序设计方法
图形显示特技算法
SQL Server 索引结构及其使用(三)
简单实用的Xml解析类
一个实用的CToolBar扩展类CToolBarEx
定时显示远程计算机的桌面
《系统飞狐》系列软件中的“系统监视器”开
自绘按钮的实现
WMI 的一个实现
定制调试诊断工具和实用程序——摆脱DLL“地
Visual Basic .NET 中多 Windows 窗体的同步
使用socket套接字时的两点经验
如何使用BHO定制你的Internet Explorer浏览
DLL初学者指南(非MFC)
VC中基于 Windows 的精确定时
模拟 Windows 下 CPU 占用率的控件及其实现
自动隐藏停泊窗体实现
Buffer Overruns,portability和其它...
在你的程序中如何使用CButtonST类
QQ2006 界面编程之鸡蛋里挑骨头

相关评论


本文章所属分类:首页 VC++

  热门关键字: