代碼運行效果圖如下:
本人在網上搜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總是報發現病毒(本來就是沒有),於是就想到了很小的記事本,在資源裡加入另外的文件......,愛搞破壞的讀者別往歪裡想哦。希望本程序能對大家有所幫助。
本文配套源碼