home *** CD-ROM | disk | FTP | other *** search
- // regview.cpp : implementation file
- //
-
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
-
- #include "stdafx.h"
- #include "oleview.h"
- #include "regview.h"
-
- #ifdef _DEBUG
- #undef THIS_FILE
- static char BASED_CODE THIS_FILE[] = __FILE__;
- #endif
-
- BOOL RegToListBox( CTreeCtrl* pTree, const CString& strKey, HKEY hk, HTREEITEM htreeParent ) ;
- HICON GetIconFromReg( HKEY hk, LPTSTR szKey ) ;
-
- int const MAX_KEYLEN = 256 ;
- int const MAX_VALLEN = (_MAX_PATH + MAX_KEYLEN) ;
-
- class CRegEntry
- {
- public:
- CRegEntry( const CString& rstrKey, const CString& rstrValue ) ;
- virtual ~CRegEntry() ;
-
- public:
- CString m_strKey ;
- CString m_strValue ;
- TCHAR* m_pszText ;
- } ;
-
- CRegEntry::CRegEntry( const CString& rstrKey, const CString& rstrValue )
- {
- m_strKey = rstrKey ;
- m_strValue = rstrValue ;
- m_pszText = NULL ;
- }
-
- CRegEntry::~CRegEntry( )
- {
- if (m_pszText != NULL)
- delete []m_pszText ;
- m_pszText = NULL ;
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CRegistryView
-
- IMPLEMENT_DYNCREATE(CRegistryView, CFormView)
-
- CRegistryView::CRegistryView()
- : CFormView(CRegistryView::IDD)
- {
- //{{AFX_DATA_INIT(CRegistryView)
- //}}AFX_DATA_INIT
- }
-
- #ifdef _DEBUG
-
- COle2ViewDoc* CRegistryView::GetDocument() // non-debug version is inline
- {
- ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(COle2ViewDoc)));
- return (COle2ViewDoc*) m_pDocument;
- }
-
- #endif //_DEBUG
-
-
- CRegistryView::~CRegistryView()
- {
- }
-
- void CRegistryView::DoDataExchange(CDataExchange* pDX)
- {
- CFormView::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CRegistryView)
- DDX_Control(pDX, IDC_OBJECTNAME, m_Name);
- DDX_Control(pDX, IDC_OBJECTCLSID, m_CLSID);
- DDX_Control(pDX, IDC_OBJICON, m_icon);
- DDX_Control(pDX, IDC_TREEVIEW, m_tree);
- //}}AFX_DATA_MAP
- }
-
-
- BEGIN_MESSAGE_MAP(CRegistryView, CFormView)
- //{{AFX_MSG_MAP(CRegistryView)
- ON_WM_SIZE()
- ON_BN_CLICKED(IDC_UNREGISTER, OnUnregister)
- ON_NOTIFY(TVN_ITEMEXPANDING, IDC_TREEVIEW, OnTreeViewItemExpanding)
- ON_NOTIFY(TVN_GETDISPINFO, IDC_TREEVIEW, OnGetDispInfoTreeView)
- ON_NOTIFY(TVN_SETDISPINFO, IDC_TREEVIEW, OnSetDispInfoTreeView)
- ON_NOTIFY(TVN_DELETEITEM, IDC_TREEVIEW, OnDeleteItemTreeView)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CRegistryView diagnostics
-
- #ifdef _DEBUG
- void CRegistryView::AssertValid() const
- {
- CFormView::AssertValid();
- }
-
- void CRegistryView::Dump(CDumpContext& dc) const
- {
- CFormView::Dump(dc);
- }
- #endif //_DEBUG
-
- /////////////////////////////////////////////////////////////////////////////
- // CRegistryView message handlers
-
- void CRegistryView::OnSize(UINT nType, int cx, int cy)
- {
- CFormView::OnSize(nType, cx, cy);
-
- if (m_tree.GetSafeHwnd())
- {
- CRect rc ;
- m_tree.GetWindowRect( &rc ) ;
- ScreenToClient( &rc ) ;
- m_tree.SetWindowPos( NULL, 4, rc.top, cx-8, cy - rc.top - 4,
- SWP_NOACTIVATE|SWP_NOZORDER ) ;
- }
- }
-
- void CRegistryView::OnUnregister()
- {
- // TODO: Add your control notification handler code here
-
- }
-
- void CRegistryView::OnInitialUpdate()
- {
- CFormView::OnInitialUpdate();
-
- CRect rc ;
- CRect rcClient ;
- GetWindowRect( &rcClient ) ;
- //GetParent()->ScreenToClient( &rcClient ) ;
- m_tree.GetWindowRect( &rc ) ;
- ScreenToClient( &rc ) ;
-
- if (g_osvi.dwMajorVersion < 4)
- {
- m_tree.SetFont( theApp.m_pFont ) ;
- m_Name.SetFont( theApp.m_pFont ) ;
- m_CLSID.SetFont( theApp.m_pFont ) ;
- // m_btnUnReg.SetFont( theApp.m_pFont ) ;
-
- m_tree.SetWindowPos( NULL, 4, rc.top, rcClient.Width() - 10,
- rcClient.Height() - rc.top - 6,
- SWP_NOACTIVATE|SWP_NOREDRAW|SWP_NOZORDER ) ;
- }
- else
- {
- m_tree.SetWindowPos( NULL, 4, rc.top, rcClient.Width() - 8,
- rcClient.Height() - rc.top - 4,
- SWP_NOACTIVATE|SWP_NOREDRAW|SWP_NOZORDER ) ;
- }
- m_tree.SetFocus() ;
-
- m_tree.SetIndent( 0 ) ;
-
- SetScrollSizes( MM_TEXT, CSize(1,1) ) ;
- }
-
- void CRegistryView::OnUpdate(CView* /* pSender */, LPARAM lHint, CObject* /*pHint*/)
- {
- if (lHint & UPD_NOINTERFACEVIEW || lHint & UPD_NOOBJECTVIEW)
- return ;
-
- COle2ViewDoc* pDoc = GetDocument() ;
-
- BeginWaitCursor() ;
- m_tree.SetRedraw(FALSE) ;
- m_tree.DeleteAllItems() ;
- if (IsEqualCLSID( pDoc->m_clsidCur, CLSID_NULL ))
- {
- m_Name.SetWindowText("") ;
- m_CLSID.SetWindowText("") ;
- m_icon.SetIcon( theApp.LoadIcon( IDR_MAINFRAME ) ) ;
- m_tree.SetRedraw(TRUE) ;
- EndWaitCursor() ;
- return ;
- }
-
- // Fill the listbox with useful info about the class
- //
- HICON hicon = NULL ;
- HKEY hk ;
-
- USES_CONVERSION;
- OLECHAR szOleCLSID[64];
- ::StringFromGUID2( pDoc->m_clsidCur, szOleCLSID,
- sizeof(szOleCLSID)/sizeof(OLECHAR) ) ;
- LPTSTR lpszCLSID = OLE2T(szOleCLSID);
- m_CLSID.SetWindowText( lpszCLSID ) ;
- m_Name.SetWindowText( pDoc->m_szObjectCur ) ;
-
- TCHAR szKey[MAX_VALLEN] ;
- TCHAR szBuf[MAX_VALLEN] ;
-
- TV_INSERTSTRUCT tvis ;
- tvis.hParent = TVI_ROOT ;
- tvis.hInsertAfter = TVI_LAST ;
- tvis.item.mask = TVIF_TEXT | TVIF_PARAM ;
-
- if (pDoc->m_fTypeLib)
- {
- // HKEY_CLASSES_ROOT\TypeLib\
- wsprintf( szBuf, _T("TypeLib\\%s"), lpszCLSID ) ;
- if (RegOpenKey( HKEY_CLASSES_ROOT, szBuf, &hk) == ERROR_SUCCESS)
- {
- LONG cb ;
- cb = sizeof(szBuf) ;
- RegQueryValue( HKEY_CLASSES_ROOT, (LPTSTR)_T("TypeLib"), szBuf, &cb) ;
- tvis.hParent = TVI_ROOT ;
- wsprintf(szKey, _T("%s = %s"), (LPCTSTR)_T("TypeLib"), (LPCTSTR)szBuf ) ;
- tvis.item.pszText = szKey ;
- tvis.item.lParam = (LPARAM)new CRegEntry( _T("TypeLib"), szBuf ) ;
- HTREEITEM htree = m_tree.InsertItem( &tvis ) ;
- RegToListBox( &m_tree, lpszCLSID, hk, htree ) ;
- m_tree.Expand( htree, TVE_EXPAND ) ;
- m_icon.SetIcon( theApp.LoadIcon( IDI_AUTOMATION ) ) ;
-
- RegCloseKey( hk ) ;
- }
- else
- m_icon.SetIcon( theApp.LoadIcon( IDI_NOICON ) ) ;
- }
- else if (pDoc->m_fInterface)
- {
- // HKEY_CLASSES_ROOT\Interface\
- wsprintf( szBuf, _T("Interface\\%s"), lpszCLSID ) ;
- if (RegOpenKey( HKEY_CLASSES_ROOT, szBuf, &hk) == ERROR_SUCCESS)
- {
- LONG cb = sizeof(szBuf) ;
- RegQueryValue( HKEY_CLASSES_ROOT, (LPTSTR)_T("Interface"), szBuf, &cb) ;
-
- tvis.hParent = TVI_ROOT ;
- wsprintf(szKey, _T("%s = %s"), (LPCTSTR)_T("Interface"), (LPCTSTR)szBuf ) ;
- tvis.item.pszText = szKey ;
- tvis.item.lParam = (LPARAM)new CRegEntry( _T("Interface"), szBuf ) ;
- HTREEITEM htree = m_tree.InsertItem( &tvis ) ;
- RegToListBox( &m_tree, lpszCLSID, hk, htree ) ;
- m_tree.Expand( htree, TVE_EXPAND ) ;
-
- cb = sizeof(szBuf) ;
- if (RegQueryValue( hk, (LPTSTR)_T("BaseInterface"), szBuf, &cb) == ERROR_SUCCESS &&
- *szBuf != '\0')
- {
- HKEY hk2 ;
- if (RegOpenKey( HKEY_CLASSES_ROOT, CString("Interface\\") + szBuf, &hk2) == ERROR_SUCCESS)
- {
- RegToListBox( &m_tree, szBuf, hk2, htree ) ;
- RegCloseKey( hk2 ) ;
- }
- }
-
- cb = sizeof(szBuf) ;
- if (RegQueryValue( hk, (LPTSTR)_T("ProxyStubClsid32"), szBuf, &cb) == ERROR_SUCCESS ||
- RegQueryValue( hk, (LPTSTR)_T("ProxyStubClsid"), szBuf, &cb) == ERROR_SUCCESS)
- {
- cb = sizeof(szBuf) ;
- *szBuf = '\0' ;
- RegQueryValue( HKEY_CLASSES_ROOT, (LPTSTR)"CLSID", szBuf, &cb) ;
- wsprintf(szKey, _T("%s = %s"), (LPCTSTR)_T("CLSID"), (LPCTSTR)szBuf ) ;
- tvis.item.pszText = szKey ;
- tvis.item.lParam = (LPARAM)new CRegEntry( "CLSID", szBuf ) ;
- HTREEITEM htreeCLSID = m_tree.InsertItem( &tvis ) ;
- HKEY hk2 ;
- if (RegOpenKey( HKEY_CLASSES_ROOT, "CLSID", &hk2) == ERROR_SUCCESS)
- {
- cb = sizeof(szBuf) ;
- if (RegQueryValue( hk, (LPTSTR)_T("ProxyStubClsid32"), szBuf, &cb) == ERROR_SUCCESS)
- {
- HKEY hk3 ;
- if (RegOpenKey( hk2, szBuf, &hk3) == ERROR_SUCCESS)
- RegToListBox( &m_tree, szBuf, hk3, htreeCLSID ) ;
- RegCloseKey( hk3 ) ;
- }
-
- cb = sizeof(szKey) ;
- if (RegQueryValue( hk, (LPTSTR)_T("ProxyStubClsid"), szKey, &cb) == ERROR_SUCCESS)
- {
- if (lstrcmpi(szKey,szBuf) != 0)
- {
- HKEY hk3 ;
- if (RegOpenKey( hk2, szKey, &hk3) == ERROR_SUCCESS)
- RegToListBox( &m_tree, szKey, hk3, htreeCLSID ) ;
- RegCloseKey( hk3 ) ;
- }
- }
-
- RegCloseKey( hk2 ) ;
- }
- m_tree.Expand( htreeCLSID, TVE_EXPAND ) ;
- }
-
- cb = sizeof(szBuf) ;
- if (RegQueryValue( hk, (LPTSTR)_T("TypeLib"), szBuf, &cb) == ERROR_SUCCESS)
- {
- wsprintf(szKey, _T("%s = %s"), (LPCTSTR)_T("TypeLib"), (LPCTSTR)szBuf ) ;
- tvis.item.pszText = szKey ;
- tvis.item.lParam = (LPARAM)new CRegEntry( "TypeLib", szBuf ) ;
- htree = m_tree.InsertItem( &tvis ) ;
-
- HKEY hk2 ;
- if (RegOpenKey( HKEY_CLASSES_ROOT, CString("TypeLib\\") + szBuf, &hk2) == ERROR_SUCCESS)
- {
- RegToListBox( &m_tree, szBuf, hk2, htree ) ;
- RegCloseKey( hk2 ) ;
- }
- m_tree.Expand( htree, TVE_EXPAND ) ;
- }
-
- RegCloseKey( hk ) ;
-
- m_icon.SetIcon( theApp.LoadIcon( IDI_INTERFACE ) ) ;
- }
- else
- m_icon.SetIcon( theApp.LoadIcon( IDI_NOICON ) ) ;
- }
- else
- {
- LONG cb = sizeof( szBuf );
- *szBuf = '\0' ;
- RegQueryValue( HKEY_CLASSES_ROOT, (LPTSTR)"CLSID", szBuf, &cb) ;
- wsprintf(szKey, _T("%s = %s"), (LPCTSTR)_T("CLSID"), (LPCTSTR)szBuf ) ;
- tvis.item.pszText = szKey ;
- tvis.item.lParam = (LPARAM)new CRegEntry( "CLSID", szBuf) ;
- HTREEITEM htreeCLSID = m_tree.InsertItem( &tvis ) ;
-
- wsprintf( szKey, _T("CLSID\\%s"), lpszCLSID ) ;
- if (RegOpenKey( HKEY_CLASSES_ROOT, szKey, &hk) == ERROR_SUCCESS)
- {
- TCHAR szValue[MAX_VALLEN] ;
-
- cb = sizeof( szBuf );
- if (RegQueryValue( hk, (LPTSTR)_T("DefaultIcon"), szValue, &cb) == ERROR_SUCCESS)
- {
- LPTSTR p ;
- int nIndex = 0 ;
-
- p = PointerToNthField( szValue, 2, ',' ) ;
- if (p && *p)
- {
- *(p-1) = '\0' ;
- nIndex = (int)*p - (int)'0' ;
- }
- if (*szValue == '"')
- {
- lstrcpy( szValue, szValue+1 ) ;
- p = strrchr( szValue, '"' ) ;
- if (p) *p = '\0' ;
- }
- hicon = ExtractIcon( AfxGetInstanceHandle(), szValue, nIndex ) ;
- }
-
- if ((int)hicon <= 1)
- {
- // try local server
- hicon = GetIconFromReg( hk, _T("LocalServer32") ) ;
- if ((int)hicon <= 1)
- hicon = GetIconFromReg( hk, _T("LocalServer") ) ;
- }
-
- if ((int)hicon <= 1)
- {
- // try inproc server
- hicon = GetIconFromReg( hk, _T("InprocServer32") ) ;
- if ((int)hicon <= 1)
- hicon = GetIconFromReg( hk, _T("InprocServer") ) ;
- }
-
- if ((int)hicon <= 1)
- {
- // try inproc handler
- hicon = GetIconFromReg( hk, _T("InprocHandler32") ) ;
- if ((int)hicon <= 1)
- hicon = GetIconFromReg( hk, _T("InprocHandler") ) ;
- }
-
- // Now fill list box with all other stuff in the HKEY_CLASSES_ROOT\CLSID key
- //
- RegToListBox( &m_tree, lpszCLSID, hk, htreeCLSID ) ;
- m_tree.Expand( htreeCLSID, TVE_EXPAND ) ;
-
- HKEY hkNext ;
-
- // HKEY_CLASSES_ROOT\ProgID\ key
- cb = sizeof( szValue ) ;
- if (RegQueryValue( hk, (LPTSTR)_T("ProgID"), szValue, &cb) != ERROR_SUCCESS)
- *szValue = '\0' ;
- if (*szValue && (RegOpenKey( HKEY_CLASSES_ROOT, szValue, &hkNext) == ERROR_SUCCESS))
- {
- cb = sizeof(szKey) ;
- RegToListBox( &m_tree, szValue, hkNext, TVI_ROOT ) ;
-
- if ((int)hicon <= 1)
- {
- szBuf[0] = '\0' ;
- cb = sizeof(szBuf) ;
- if (RegQueryValue( hkNext, (LPTSTR)_T("Protocol\\StdFileEditing\\Server"), szBuf, &cb ) == ERROR_SUCCESS)
- {
- LPTSTR p ;
- if (*szBuf == '"')
- {
- lstrcpy( szBuf, szBuf+1 ) ;
- p = strrchr( szBuf, '"' ) ;
- if (p) *p = '\0' ;
- }
-
- hicon = ExtractIcon( AfxGetInstanceHandle(), szBuf, 0 ) ;
- }
-
- }
-
- RegCloseKey( hkNext ) ;
- }
-
- wsprintf( szBuf, _T("FileType\\%s"), lpszCLSID ) ;
- if (lpszCLSID && (RegOpenKey( HKEY_CLASSES_ROOT, szBuf, &hkNext) == ERROR_SUCCESS))
- {
- tvis.hParent = TVI_ROOT ;
- *szBuf = '\0' ;
- cb = sizeof(szBuf) ;
- RegQueryValue( HKEY_CLASSES_ROOT, (LPTSTR)"FileType", szBuf, &cb) ;
- wsprintf(szKey, _T("%s = %s"), (LPCTSTR)_T("FileType"), (LPCTSTR)szBuf ) ;
- tvis.item.pszText = szKey ;
- tvis.item.lParam = (LPARAM)new CRegEntry( "FileType", szBuf) ;
- HTREEITEM htree = m_tree.InsertItem( &tvis ) ;
- RegToListBox( &m_tree, lpszCLSID, hkNext, htree ) ;
- m_tree.Expand( htree, TVE_EXPAND ) ;
- RegCloseKey( hkNext ) ;
- }
-
- // HKEY_CLASSES_ROOT\TypeLib\
- cb = sizeof( szValue ) ;
- if (RegQueryValue( hk, (LPTSTR)_T("TypeLib"), szValue, &cb) == ERROR_SUCCESS)
- {
- wsprintf( szBuf, _T("TypeLib\\%s"), szValue ) ;
- if (RegOpenKey( HKEY_CLASSES_ROOT, szBuf, &hkNext) == ERROR_SUCCESS)
- {
- tvis.hParent = TVI_ROOT ;
- *szBuf = '\0' ;
- cb = sizeof(szBuf) ;
- RegQueryValue( HKEY_CLASSES_ROOT, (LPTSTR)"TypeLib", szBuf, &cb) ;
-
- wsprintf(szKey, _T("%s = %s"), (LPCTSTR)_T("TypeLib"), (LPCTSTR)szBuf ) ;
- tvis.item.pszText = szKey ;
- tvis.item.lParam = (LPARAM)new CRegEntry( "TypeLib", szBuf) ;
- HTREEITEM htree = m_tree.InsertItem( &tvis ) ;
- RegToListBox( &m_tree, szValue, hkNext, htree ) ;
- m_tree.Expand( htree, TVE_EXPAND ) ;
- RegCloseKey( hkNext ) ;
- }
- }
-
- RegCloseKey( hk ) ;
-
- if ((int)hicon > 1)
- m_icon.SetIcon( hicon ) ;
- else
- m_icon.SetIcon( theApp.LoadIcon( IDI_NOICON ) ) ;
-
- m_tree.EnsureVisible( htreeCLSID ) ;
- }
- }
-
- m_tree.SetRedraw(TRUE) ;
- EndWaitCursor() ;
-
- }
-
- BOOL RegToListBox( CTreeCtrl* pTree, const CString& strKey, HKEY hk, HTREEITEM htreeParent )
- {
- TCHAR* szKey = NULL ;
- TCHAR* szValue = NULL ;
- TCHAR* szBuf = NULL ;
- LONG cb ;
- DWORD dwIndex ;
- BOOL f = TRUE ;
-
- TRY
- {
- szKey = new TCHAR[MAX_KEYLEN] ;
- szValue = new TCHAR[MAX_VALLEN] ;
- szBuf = new TCHAR[MAX_VALLEN + 4] ;
-
- TV_INSERTSTRUCT tvis ;
- tvis.hParent = htreeParent ;
- tvis.hInsertAfter = TVI_LAST ;
- tvis.item.mask = TVIF_TEXT | TVIF_PARAM ;
-
- cb = MAX_KEYLEN ;
- RegQueryValue( hk, NULL, szValue, &cb) ;
- wsprintf( szBuf, _T("%s = %s"), (LPCTSTR)strKey, (LPCTSTR)szValue ) ;
- tvis.item.pszText = szBuf ;
- tvis.item.lParam = (LPARAM)new CRegEntry( strKey, szValue ) ;
- HTREEITEM htree = pTree->InsertItem( &tvis ) ;
-
- for ( dwIndex = 0 ;
- RegEnumKey( hk, dwIndex, szKey, MAX_KEYLEN) == ERROR_SUCCESS ;
- ++dwIndex )
- {
- cb = MAX_KEYLEN ;
- *szValue = '\0' ;
- RegQueryValue( hk, (LPTSTR)szKey, szValue, &cb) ;
- HKEY hkNext ;
- if (RegOpenKey( hk, szKey, &hkNext) == ERROR_SUCCESS)
- {
- RegToListBox( pTree, szKey, hkNext, htree ) ;
- RegCloseKey( hkNext ) ;
- }
- }
-
- pTree->Expand( htree, TVE_EXPAND ) ;
-
- delete szKey ;
- delete szValue ;
- delete szBuf ;
- }
- CATCH(CException, pException)
- {
- if (szKey) delete [] szKey ;
- if (szValue) delete [] szValue ;
- if (szBuf) delete [] szBuf ;
-
- return FALSE ;
- }
- END_CATCH;
-
- return TRUE ;
- }
-
- HICON GetIconFromReg( HKEY hk, LPTSTR szKey )
- {
- TCHAR szValue[MAX_VALLEN] ;
- LONG cb = MAX_VALLEN ;
- if (RegQueryValue( hk, szKey, szValue, &cb) == ERROR_SUCCESS)
- {
- LPTSTR p = szValue + lstrlen( szValue ) - 1 ;
- if (p && *p == ' ')
- *p = '\0' ;
- if (*szValue == '"')
- {
- lstrcpy( szValue, szValue+1 ) ;
- p = strrchr( szValue, '"' ) ;
- if (p) *p = '\0' ;
- }
-
- return ExtractIcon( AfxGetInstanceHandle(), szValue, 0 ) ;
- }
- else
- return (HICON)-1 ;
- }
-
- void CRegistryView::OnTreeViewItemExpanding(NMHDR* pNMHDR, LRESULT* pResult)
- {
- NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
-
- if (pNMTreeView->action == TVE_COLLAPSE)
- *pResult = 1 ; // prevent collapse
- else
- *pResult = 0 ;
- }
-
- void CRegistryView::OnGetDispInfoTreeView(NMHDR* pNMHDR, LRESULT* pResult)
- {
- TV_DISPINFO * pdispinfo = (TV_DISPINFO*)pNMHDR;
-
- /*
- CRegEntry* pentry = (CRegEntry*)pdispinfo->item.lParam ;
- if (pentry)
- {
- //if (pentry->m_pszText)
- //{
- // delete []pentry->m_pszText ;
- // pentry->m_pszText = NULL ;
- //}
- if (pdispinfo->item.mask & TVIF_TEXT)
- {
- if (pentry->m_pszText)
- pdispinfo->item.pszText = pentry->m_pszText ;
- else
- {
- pentry->m_pszText = new TCHAR[pentry->m_strKey.GetLength() + pentry->m_strKey.GetLength() + 4] ;
- wsprintf( pentry->m_pszText, _T("%s = %s"), (LPCTSTR)pentry->m_strKey, (LPCTSTR)pentry->m_strValue ) ;
- pdispinfo->item.pszText = pentry->m_pszText ;
- pdispinfo->item.mask = TVIF_TEXT ;
- }
- }
- }
- */
- *pResult = 0;
- }
-
- void CRegistryView::OnSetDispInfoTreeView(NMHDR* pNMHDR, LRESULT* pResult)
- {
- TV_DISPINFO * pdispinfo = (TV_DISPINFO*)pNMHDR;
- // TODO: Add your control notification handler code here
-
- *pResult = 0;
- }
-
- void CRegistryView::OnDeleteItemTreeView(NMHDR* pNMHDR, LRESULT* pResult)
- {
- NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
-
- if (pNMTreeView->itemOld.lParam)
- {
- delete (CRegEntry*)pNMTreeView->itemOld.lParam;
- }
-
- *pResult = 0;
- }
-