<small></small>
#include "stdafx.h"
#include "NtRegEdit.h"
#include "OptTreeDlg.h"
#include "SelColorDlg.h"
#include "NtRegistry.h"
IMPLEMENT_DYNAMIC(COptTreeDlg, CSAPrefsSubDlg)
COptTreeDlg::COptTreeDlg(CWnd* pParent )
: CSAPrefsSubDlg(COptTreeDlg::IDD, pParent)
{
}
COptTreeDlg::~COptTreeDlg()
{
}
void COptTreeDlg::DoDataExchange(CDataExchange* pDX)
{
CSAPrefsSubDlg::DoDataExchange(pDX);
DDX_Control(pDX, CHK_BOLD, m_chkBold);
DDX_Control(pDX, CHK_BOLD_HIDDEN, m_chkBoldHidden);
DDX_Control(pDX, BTN_APPLY_CHGS_TREE, m_btnApplyChgs);
DDX_Control(pDX, IDC_TREE1, m_tcTree);
DDX_Control(pDX, CHK_COLORS, m_chkColor);
}
BEGIN_MESSAGE_MAP(COptTreeDlg, CSAPrefsSubDlg)
ON_BN_CLICKED(CHK_COLORS, OnColors)
ON_NOTIFY(NM_CLICK, IDC_TREE1, OnClickTree)
ON_BN_CLICKED(BTN_APPLY_CHGS_TREE, OnApplyChgsTree)
ON_BN_CLICKED(CHK_BOLD, OnBold)
ON_BN_CLICKED(CHK_BOLD_HIDDEN, OnBoldHidden)
END_MESSAGE_MAP()
BOOL COptTreeDlg::OnInitDialog()
{
CSAPrefsSubDlg::OnInitDialog();
m_bItemsModified = FALSE;
m_btnApplyChgs.EnableWindow(m_bItemsModified);
m_hRoot = m_tcTree.InsertItem("CNtRegistry",TVI_ROOT);
m_hHKCR = m_tcTree.InsertItem("HKEY_CLASSES_ROOT",m_hRoot);
m_hHKCU = m_tcTree.InsertItem("HKEY_CURRENT_USER",m_hRoot);
m_hHKLM = m_tcTree.InsertItem("HKEY_LOCAL_MACHINE",m_hRoot);
m_hHKU = m_tcTree.InsertItem("HKEY_USERS",m_hRoot);
m_hHKCC = m_tcTree.InsertItem("HKEY_CURRENT_CONFIG",m_hRoot);
m_bBold = theApp.m_clsMainFrm->m_bBold;
m_bBoldHidden = theApp.m_clsMainFrm->m_bBoldHidden;
m_bColors = theApp.m_clsMainFrm->m_bColors;
m_crHKCRColors = theApp.m_clsMainFrm->m_crHKCRColors;
m_crHKCUColors = theApp.m_clsMainFrm->m_crHKCUColors;
m_crHKLMColors = theApp.m_clsMainFrm->m_crHKLMColors;
m_crHKUColors = theApp.m_clsMainFrm->m_crHKUColors;
m_crHKCCColors = theApp.m_clsMainFrm->m_crHKCCColors;
m_chkBold.SetCheck(m_bBold);
m_chkBoldHidden.SetCheck(m_bBoldHidden);
m_chkColor.SetCheck(m_bColors);
m_tcTree.SetItemColor(m_hHKCR, m_crHKCRColors);
m_tcTree.SetItemBold(m_hHKCR, m_bBold);
m_tcTree.SetItemColor(m_hHKCU, m_crHKCUColors);
m_tcTree.SetItemBold(m_hHKCU, m_bBold);
m_tcTree.SetItemColor(m_hHKLM, m_crHKLMColors);
m_tcTree.SetItemBold(m_hHKLM, m_bBold);
m_tcTree.SetItemColor(m_hHKU, m_crHKUColors);
m_tcTree.SetItemBold(m_hHKU, m_bBold);
m_tcTree.SetItemColor(m_hHKCC, m_crHKCCColors);
m_tcTree.SetItemBold(m_hHKCC, m_bBold);
m_tcTree.Expand(m_hRoot, TVE_EXPAND);
return TRUE; }
void COptTreeDlg::OnClickTree(NMHDR* pNMHDR, LRESULT* pResult)
{
CPoint pt;
GetCursorPos(&pt);
CPoint MousePosition = pt;
m_tcTree.ScreenToClient ( &MousePosition );
TVHITTESTINFO HitInfo;
HitInfo.pt = MousePosition;
UINT uiMask = TVHT_ONITEMLABEL;
HTREEITEM hItem = m_tcTree.HitTest(&HitInfo);
if (hItem != NULL && uiMask & HitInfo.flags && m_tcTree.GetParentItem(hItem) != NULL) {
COLORREF rgbColor = m_tcTree.GetItemColor(hItem);
CSelColorDlg dlgSelColor(GetRValue(rgbColor),GetGValue(rgbColor),GetBValue(rgbColor));
if(dlgSelColor.DoModal() == IDOK)
{
m_tcTree.SetRedraw(FALSE);
rgbColor = dlgSelColor.GetColor();
m_tcTree.SetItemColor(hItem, rgbColor);
CNtRegistry reg;
reg.SetKey(HKEY_CURRENT_USER,_T("Software\\NtRegEdit\\Settings\\TreeCtrl\\KeyColors"),FALSE,TRUE);
if (m_hHKCR == hItem) {
m_crHKCRColors = rgbColor;
}
else if (m_hHKCU == hItem) {
m_crHKCUColors = rgbColor;
}
else if (m_hHKLM == hItem) {
m_crHKLMColors = rgbColor;
}
else if (m_hHKU == hItem) {
m_crHKUColors = rgbColor;
}
else if (m_hHKCC == hItem) {
m_crHKCCColors = rgbColor;
}
m_bItemsModified = TRUE;
m_btnApplyChgs.EnableWindow(m_bItemsModified);
m_tcTree.SetRedraw(TRUE);
}
}
*pResult = 0;
}
void COptTreeDlg::OnColors()
{
m_bColors = (BOOL)m_chkColor.GetCheck();
m_bItemsModified = TRUE;
m_btnApplyChgs.EnableWindow(m_bItemsModified);
RefreshItems();
}
void COptTreeDlg::OnBold()
{
m_bBold = (BOOL)m_chkBold.GetCheck();
m_bItemsModified = TRUE;
m_btnApplyChgs.EnableWindow(m_bItemsModified);
RefreshItems();
}
void COptTreeDlg::OnBoldHidden()
{
m_bBoldHidden = (BOOL)m_chkBoldHidden.GetCheck();
m_bItemsModified = TRUE;
m_btnApplyChgs.EnableWindow(m_bItemsModified);
RefreshItems();
}
void COptTreeDlg::RefreshItems(void)
{
m_tcTree.SetRedraw(FALSE);
m_tcTree.DeleteAllItems();
m_hRoot = m_tcTree.InsertItem("CNtRegistry",TVI_ROOT);
m_hHKCR = m_tcTree.InsertItem("HKEY_CLASSES_ROOT",m_hRoot);
m_hHKCU = m_tcTree.InsertItem("HKEY_CURRENT_USER",m_hRoot);
m_hHKLM = m_tcTree.InsertItem("HKEY_LOCAL_MACHINE",m_hRoot);
m_hHKU = m_tcTree.InsertItem("HKEY_USERS",m_hRoot);
m_hHKCC = m_tcTree.InsertItem("HKEY_CURRENT_CONFIG",m_hRoot);
m_crHKCRColors = RGB(0,0,0);
m_crHKCUColors = RGB(0,0,0);
m_crHKLMColors = RGB(0,0,0);
m_crHKUColors = RGB(0,0,0);
m_crHKCCColors = RGB(0,0,0);
m_bBold = (BOOL)m_chkBold.GetCheck();
m_bBoldHidden = (BOOL)m_chkBoldHidden.GetCheck();
m_bColors = (BOOL)m_chkColor.GetCheck();
CNtRegistry reg;
if (reg.SetKey(HKEY_CURRENT_USER,_T("Software\\NtRegEdit\\Settings\\TreeCtrl"),FALSE,TRUE))
{
if (m_bColors) {
if (reg.SetKey(HKEY_CURRENT_USER,_T("Software\\NtRegEdit\\Settings\\TreeCtrl\\KeyColors"),FALSE,TRUE))
{
m_crHKCRColors = reg.ReadColor(_T("HKCR"),RGB(0,0,0));
m_crHKCUColors = reg.ReadColor(_T("HKCU"),RGB(0,0,0));
m_crHKLMColors = reg.ReadColor(_T("HKLM"),RGB(0,0,0));
m_crHKUColors = reg.ReadColor(_T("HKU"),RGB(0,0,0));
m_crHKCCColors = reg.ReadColor(_T("HKCC"),RGB(0,0,0));
}
}
}
m_tcTree.SetItemColor(m_hHKCR, m_crHKCRColors);
m_tcTree.SetItemBold(m_hHKCR, m_bBold);
m_tcTree.SetItemColor(m_hHKCU, m_crHKCUColors);
m_tcTree.SetItemBold(m_hHKCU, m_bBold);
m_tcTree.SetItemColor(m_hHKLM, m_crHKLMColors);
m_tcTree.SetItemBold(m_hHKLM, m_bBold);
m_tcTree.SetItemColor(m_hHKU, m_crHKUColors);
m_tcTree.SetItemBold(m_hHKU, m_bBold);
m_tcTree.SetItemColor(m_hHKCC, m_crHKCCColors);
m_tcTree.SetItemBold(m_hHKCC, m_bBold);
m_tcTree.Expand(m_hRoot, TVE_EXPAND);
m_tcTree.SetRedraw(TRUE);
}
void COptTreeDlg::OnApplyChgsTree()
{
theApp.m_clsMainFrm->m_bBold = m_bBold;
theApp.m_clsMainFrm->m_bBoldHidden = m_bBoldHidden;
theApp.m_clsMainFrm->m_bColors = m_bColors;
theApp.m_clsMainFrm->m_crHKCRColors = m_crHKCRColors;
theApp.m_clsMainFrm->m_crHKCUColors = m_crHKCUColors;
theApp.m_clsMainFrm->m_crHKLMColors = m_crHKLMColors;
theApp.m_clsMainFrm->m_crHKUColors = m_crHKUColors;
theApp.m_clsMainFrm->m_crHKCCColors = m_crHKCCColors;
CNtRegistry reg;
if (reg.SetKey(HKEY_CURRENT_USER,_T("Software\\NtRegEdit\\Settings\\TreeCtrl"),FALSE,TRUE))
{
reg.WriteBool(_T("UseBold"),theApp.m_clsMainFrm->m_bBold);
reg.WriteBool(_T("UseBoldHidden"),theApp.m_clsMainFrm->m_bBoldHidden);
reg.WriteBool(_T("UseColor"),theApp.m_clsMainFrm->m_bColors);
if (reg.SetKey(HKEY_CURRENT_USER,_T("Software\\NtRegEdit\\Settings\\TreeCtrl\\KeyColors"),FALSE,TRUE) &&
theApp.m_clsMainFrm->m_bColors)
{
reg.WriteColor(_T("HKCR"), theApp.m_clsMainFrm->m_crHKCRColors);
reg.WriteColor(_T("HKCU"), theApp.m_clsMainFrm->m_crHKCUColors);
reg.WriteColor(_T("HKLM"), theApp.m_clsMainFrm->m_crHKLMColors);
reg.WriteColor(_T("HKU"), theApp.m_clsMainFrm->m_crHKUColors);
reg.WriteColor(_T("HKCC"), theApp.m_clsMainFrm->m_crHKCCColors);
}
}
RefreshItems();
CTreeCtrl &tc = theApp.m_clsTV->GetTreeCtrl();
tc.DeleteAllItems();
theApp.m_clsTV->m_hRoot = tc.InsertItem(_T("CNtRegistry"),0,0);
theApp.m_clsTV->m_hHKCR = tc.InsertItem(_T("HKEY_CLASSES_ROOT"),2,2,theApp.m_clsTV->m_hRoot);
tc.InsertItem(FAKEDITEM,5,5,theApp.m_clsTV->m_hHKCR,TVI_LAST);
theApp.m_clsTV->SetItemColor(theApp.m_clsTV->m_hHKCR,theApp.m_clsMainFrm->m_crHKCRColors);
theApp.m_clsTV->SetItemBold(theApp.m_clsTV->m_hHKCR,theApp.m_clsMainFrm->m_bBold);
theApp.m_clsTV->m_hHKCU = tc.InsertItem(_T("HKEY_CURRENT_USER"),2,2,theApp.m_clsTV->m_hRoot);
tc.InsertItem(FAKEDITEM,5,5,theApp.m_clsTV->m_hHKCU,TVI_LAST);
theApp.m_clsTV->SetItemColor(theApp.m_clsTV->m_hHKCU,theApp.m_clsMainFrm->m_crHKCUColors);
theApp.m_clsTV->SetItemBold(theApp.m_clsTV->m_hHKCU,theApp.m_clsMainFrm->m_bBold);
theApp.m_clsTV->m_hHKLM = tc.InsertItem(_T("HKEY_LOCAL_MACHINE"),2,2,theApp.m_clsTV->m_hRoot);
tc.InsertItem(FAKEDITEM,5,5,theApp.m_clsTV->m_hHKLM,TVI_LAST);
theApp.m_clsTV->SetItemColor(theApp.m_clsTV->m_hHKLM,theApp.m_clsMainFrm->m_crHKLMColors);
theApp.m_clsTV->SetItemBold(theApp.m_clsTV->m_hHKLM,theApp.m_clsMainFrm->m_bBold);
theApp.m_clsTV->m_hHKU = tc.InsertItem(_T("HKEY_USERS"),2,2,theApp.m_clsTV->m_hRoot);
tc.InsertItem(FAKEDITEM,5,5,theApp.m_clsTV->m_hHKU,TVI_LAST);
theApp.m_clsTV->SetItemColor(theApp.m_clsTV->m_hHKU,theApp.m_clsMainFrm->m_crHKUColors);
theApp.m_clsTV->SetItemBold(theApp.m_clsTV->m_hHKU,theApp.m_clsMainFrm->m_bBold);
theApp.m_clsTV->m_hHKCC = tc.InsertItem(_T("HKEY_CURRENT_CONFIG"),2,2,theApp.m_clsTV->m_hRoot);
tc.InsertItem(FAKEDITEM,5,5,theApp.m_clsTV->m_hHKCC,TVI_LAST);
theApp.m_clsTV->SetItemColor(theApp.m_clsTV->m_hHKCC,theApp.m_clsMainFrm->m_crHKCCColors);
theApp.m_clsTV->SetItemBold(theApp.m_clsTV->m_hHKCC,theApp.m_clsMainFrm->m_bBold);
theApp.m_clsTV->m_ntReg.LookupSID(theApp.m_clsTV->m_csSID);
theApp.m_clsTV->m_csSID.Insert(0,_T("\\Registry\\User\\"));
tc.Expand(theApp.m_clsTV->m_hRoot,TVE_EXPAND);
m_bItemsModified = FALSE;
m_btnApplyChgs.EnableWindow(m_bItemsModified);
}
void COptTreeDlg::OnOK()
{
if (m_bItemsModified) {
if (MessageBox("Some items have been modified! Do you want to save the changes?",
"TREECTRL - Modifications ",
MB_YESNO|MB_ICONQUESTION) == IDYES) {
COptTreeDlg::OnApplyChgsTree();
}
}
CSAPrefsSubDlg::OnOK();
}