程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 可以替代系統記事本的程序

可以替代系統記事本的程序

編輯:關於VC++

代碼運行效果圖如下:

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

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved