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.
142 lines
3.1 KiB
142 lines
3.1 KiB
//========= 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(); |
|
} |
|
}
|
|
|