//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ // //=============================================================================// // Vkeylistview.cpp : implementation file // #include "stdafx.h" #include "vkeyedit.h" #include "Vkeylistview.h" #include #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(); } }