My FAQ,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > WINDOWS标准界面元素
可以替代系统记事本的程序
作者:未知 时间:2005-07-20 14:11 出处:VC知识库 责编:MyFAQ
              摘要:可以替代系统记事本的程序

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

下载示例工程

代码运行效果图如下:


本人在网上搜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总是报发现病毒(本来就是没有),于是就想到了很小的记事本,在资源里加入另外的文件......,爱搞破坏的读者别往歪里想哦。希望本程序能对大家有所帮助。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有