下载示例工程代码运行效果图如下:本人在网上搜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);
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); } }