
網路上找不到 VC++ 版 Notepad 原始碼,決定自行開發一個可替代系統記事本的程式。模仿 Windows 2000 版 Notepad 介面與功能,採用單文件架構、CEditView 為基底,副檔名關聯 .txt。
Notepad,第 4 步進階設定副檔名為 txtID_EDIT_COPY)在 CNotepadView 加入 CFont m_Font 成員,處理 WM_CREATE:
CEdit& edit = GetEditCtrl();
if (m_Font.m_hObject == NULL)
m_Font.CreatePointFont(120, "Fixedsys"); // 12 點 Fixedsys
if (m_Font.m_hObject != NULL)
edit.SetFont(&m_Font);
edit.SetTabStops(16); // 設定定位寬度
void CNotepadView::OnFormatFont() {
LOGFONT lf;
CFont* font = GetEditCtrl().GetFont();
if (font == NULL) {
font = new CFont;
font->CreatePointFont(120, "Fixedsys");
font->GetLogFont(&lf);
delete font;
} else font->GetLogFont(&lf);
CFontDialog dlg(&lf);
if (dlg.DoModal() == IDOK) {
m_Font.DeleteObject();
m_Font.CreateFontIndirect(&lf);
SetFont(&m_Font);
}
}
在 CNotepadApp::InitInstance() 修改登錄表關聯 .txt 檔案。執行後行為與系統 Notepad 一致。剩餘工作:關於對話框、圖示等修飾。
最初是為了綁定兩個檔案(非惡意用途),發現金山毒霸 2003 誤報病毒,靈機一動用極小的 Notepad 當載體在資源內嵌其他檔案。希望本程式能提供參考價值。