You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
3.1 KiB
143 lines
3.1 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//
|
||
|
//=============================================================================//
|
||
|
// Vkeylistview.cpp : implementation file
|
||
|
//
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "vkeyedit.h"
|
||
|
#include "Vkeylistview.h"
|
||
|
|
||
|
#include <KeyValues.h>
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
#define new DEBUG_NEW
|
||
|
#undef THIS_FILE
|
||
|
static char THIS_FILE[] = __FILE__;
|
||
|
#endif
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CVkeylistview
|
||
|
|
||
|
IMPLEMENT_DYNCREATE(CVkeylistview, CListView)
|
||
|
|
||
|
CVkeylistview::CVkeylistview()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
CVkeylistview::~CVkeylistview()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
BEGIN_MESSAGE_MAP(CVkeylistview, CListView)
|
||
|
//{{AFX_MSG_MAP(CVkeylistview)
|
||
|
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||
|
//}}AFX_MSG_MAP
|
||
|
END_MESSAGE_MAP()
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CVkeylistview drawing
|
||
|
|
||
|
void CVkeylistview::OnDraw(CDC* pDC)
|
||
|
{
|
||
|
CDocument* pDoc = GetDocument();
|
||
|
// TODO: add draw code here
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CVkeylistview diagnostics
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
void CVkeylistview::AssertValid() const
|
||
|
{
|
||
|
CListView::AssertValid();
|
||
|
}
|
||
|
|
||
|
void CVkeylistview::Dump(CDumpContext& dc) const
|
||
|
{
|
||
|
CListView::Dump(dc);
|
||
|
}
|
||
|
#endif //_DEBUG
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CVkeylistview message handlers
|
||
|
|
||
|
void CVkeylistview::OnInitialUpdate()
|
||
|
{
|
||
|
CListView::OnInitialUpdate();
|
||
|
|
||
|
CListCtrl &theList = GetListCtrl();
|
||
|
|
||
|
theList.DeleteColumn( 0 );
|
||
|
theList.DeleteColumn( 0 );
|
||
|
|
||
|
theList.InsertColumn( 0, _T("Name"), LVCFMT_LEFT, 200 );
|
||
|
theList.InsertColumn( 1, _T("Value"), LVCFMT_LEFT, 800 );
|
||
|
|
||
|
theList.SetExtendedStyle( LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES );
|
||
|
}
|
||
|
|
||
|
void CVkeylistview::CalcWindowRect(LPRECT lpClientRect, UINT nAdjustType)
|
||
|
{
|
||
|
// TODO: Add your specialized code here and/or call the base class
|
||
|
|
||
|
CListView::CalcWindowRect(lpClientRect, nAdjustType);
|
||
|
}
|
||
|
|
||
|
BOOL CVkeylistview::PreCreateWindow(CREATESTRUCT& cs)
|
||
|
{
|
||
|
// TODO: Add your specialized code here and/or call the base class
|
||
|
|
||
|
return CListView::PreCreateWindow(cs);
|
||
|
}
|
||
|
|
||
|
BOOL CVkeylistview::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
|
||
|
{
|
||
|
// TODO: Add your specialized code here and/or call the base class
|
||
|
|
||
|
dwStyle |= LVS_REPORT|LVS_SINGLESEL|LVS_EDITLABELS|LVS_AUTOARRANGE;
|
||
|
|
||
|
return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
|
||
|
}
|
||
|
|
||
|
void CVkeylistview::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
|
||
|
{
|
||
|
KeyValues *kv = (KeyValues *)pHint;
|
||
|
|
||
|
if ( !kv || lHint != 2 )
|
||
|
return;
|
||
|
|
||
|
CListCtrl &theList = GetListCtrl();
|
||
|
|
||
|
theList.DeleteAllItems();
|
||
|
|
||
|
KeyValues *subkey = kv->GetFirstValue();
|
||
|
|
||
|
LVITEM lvi;
|
||
|
|
||
|
int i = 0;
|
||
|
|
||
|
while ( subkey )
|
||
|
{
|
||
|
lvi.mask = LVIF_TEXT;
|
||
|
lvi.iItem = i;
|
||
|
|
||
|
lvi.iSubItem = 0;
|
||
|
lvi.pszText = (char*)subkey->GetName();
|
||
|
theList.InsertItem(&lvi);
|
||
|
|
||
|
lvi.iSubItem =1;
|
||
|
lvi.pszText = (char*)subkey->GetString();
|
||
|
theList.SetItem(&lvi);
|
||
|
|
||
|
i++;
|
||
|
|
||
|
subkey = subkey->GetNextValue();
|
||
|
}
|
||
|
}
|