在市面上,有很多注冊表管理方面的程序,如:魔法兔子,IE保護器等。但它們對注冊表都進行固定的操作,對與windows的高級管理員來說是遠遠不夠的,還經常用到Regedit,那它是如何設計的呢?經過分析它的主要分成以下幾塊①、注冊表數據的顯示與操作;②、注冊表數據的導入與導出;③注冊表數據的查找與替換。以下介紹在VC6中對注冊表數據的顯示與操作的實現。對於後二點今後將進行闡述。
程序運行界面如下:
在VC6中創建一單文檔工程,可命名為RegExplorer,前5步可以按默認方式進行,在AppWizard對話框的Step6中,選取視圖類的基類為ClistView。
為支持樹與列表的表現形式,必須還要手工加入CregLeftView類,基類為CtreeView。並對各類對象的通信與顯示進行必要的設置。
對CregExplorerApp類的InitInstance()進行一些修改
pDocTemplate=newCSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CRegExplorerDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CRegLeftView));//本為CRegExplorerView
在CmainFrame類中加入protected型的成員變量CSplitterWndm_wndSplitter用於實現窗口的分割,在MainFrm.cpp中加入#include"RegLeftView.h"
BOOLCMainFrame::OnCreateClient(LPCREATESTRUCTlpcs,CCreateContext*pContext)
{
if(!m_wndSplitter.CreateStatic(this,1,2))
returnFALSE;
if(!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CRegLeftView),CSize(100,100),pContext)||
!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CRegExplorerView),CSize(100,100),pContext))
{
m_wndSplitter.DestroyWindow();
returnFALSE;
}
m_wndSplitter.SetColumnInfo(0,200,100);
returnTRUE;
}
對文檔類CregExplorerDoc的類定義前可加入classCRegExplorerView;並加入public型的CregExplorerView指針*m_RegExplorerView;用文檔類進行對象之間的通信。
左邊樹型CregLeftView類的設計:
1.和文檔類進行通信的代碼:
在類定義前加入classCRegExplorerDoc;並在類中實現public型的成員函數
CRegExplorerDoc*CRegLeftView::GetDocument()
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRegExplorerDoc)));
return(CRegExplorerDoc*)m_pDocument;
}