197 lines
4.5 KiB
C++
197 lines
4.5 KiB
C++
// UserListView.cpp : implementation of the CUserListView class
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "StockServer.h"
|
|
|
|
//#include "MessagesView.h"
|
|
#include "UserListView.h"
|
|
#include "..\\Common\\ComData.h"
|
|
#include "..\\Common\\LCLayout.h"
|
|
#include "MainFrm.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
enum eUserListView {
|
|
USERLISTVIEW_COL_NAME = 0,
|
|
// USERLISTVIEW_COL_TIME
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CUserListView
|
|
|
|
IMPLEMENT_DYNCREATE(CUserListView, CListView)
|
|
|
|
BEGIN_MESSAGE_MAP(CUserListView, CListView)
|
|
//{{AFX_MSG_MAP(CClientMessagesView)
|
|
ON_WM_CREATE()
|
|
ON_WM_DESTROY()
|
|
ON_WM_PAINT()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CUserListView construction/destruction
|
|
|
|
CUserListView::CUserListView()
|
|
{
|
|
// TODO: add construction code here
|
|
|
|
}
|
|
|
|
CUserListView::~CUserListView()
|
|
{
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CUserListView drawing
|
|
|
|
void CUserListView::OnPaint()
|
|
{
|
|
CListCtrl& lc = GetListCtrl();
|
|
|
|
Default();
|
|
|
|
if (!lc.GetItemCount()) {
|
|
|
|
CDC* pDC = GetDC();
|
|
int nSavedDC = pDC->SaveDC();
|
|
|
|
CRect rc;
|
|
GetClientRect(&rc);
|
|
|
|
CHeaderCtrl* pHC;
|
|
pHC = lc.GetHeaderCtrl();
|
|
if (pHC != NULL)
|
|
{
|
|
CRect rcH;
|
|
pHC->GetItemRect(0, &rcH);
|
|
rc.top += rcH.bottom;
|
|
}
|
|
|
|
pDC->FillRect(rc, &CBrush(::GetSysColor(COLOR_WINDOW)));
|
|
pDC->SetBkMode(TRANSPARENT);
|
|
pDC->SelectStockObject(ANSI_VAR_FONT);
|
|
pDC->DrawText(CString((LPCSTR)IDS_EMPTY_LIST), rc,
|
|
DT_CENTER|DT_WORDBREAK|DT_NOPREFIX|
|
|
DT_NOCLIP|DT_VCENTER|DT_SINGLELINE);
|
|
|
|
pDC->RestoreDC(nSavedDC);
|
|
ReleaseDC(pDC);
|
|
}
|
|
}
|
|
|
|
BOOL CUserListView::PreCreateWindow(CREATESTRUCT& cs)
|
|
{
|
|
cs.style |= LVS_REPORT;
|
|
cs.style |= LVS_SHOWSELALWAYS;
|
|
cs.style |= LVS_SINGLESEL;
|
|
|
|
return CListView::PreCreateWindow(cs);
|
|
}
|
|
|
|
int CUserListView::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (CListView::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
CListCtrl& lc = GetListCtrl();
|
|
lc.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_SUBITEMIMAGES);
|
|
|
|
// insert columns
|
|
lc.InsertColumn(USERLISTVIEW_COL_NAME, "À̸§", LVCFMT_LEFT, 130);
|
|
|
|
CLCLayout::RestoreLayout(&lc, "UserListView");
|
|
|
|
return 0;
|
|
}
|
|
|
|
void CUserListView::OnDestroy()
|
|
{
|
|
CLCLayout::SaveLayout(&GetListCtrl(), "UserListView");
|
|
CListView::OnDestroy();
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CUserListView diagnostics
|
|
|
|
#ifdef _DEBUG
|
|
void CUserListView::AssertValid() const
|
|
{
|
|
CListView::AssertValid();
|
|
}
|
|
|
|
void CUserListView::Dump(CDumpContext& dc) const
|
|
{
|
|
CListView::Dump(dc);
|
|
}
|
|
#endif //_DEBUG
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CUserListView message handlers
|
|
|
|
|
|
void CUserListView::UpdateCols()
|
|
{
|
|
CString szBuf;
|
|
LVCOLUMN pCol;
|
|
CListCtrl& lc = GetListCtrl();
|
|
|
|
ZeroMemory(&pCol, sizeof(LVCOLUMN));
|
|
pCol.mask = LVCF_TEXT;
|
|
|
|
szBuf = "À̸§";
|
|
pCol.cchTextMax = szBuf.GetLength();
|
|
pCol.pszText = szBuf.GetBuffer(pCol.cchTextMax);
|
|
szBuf.ReleaseBuffer();
|
|
lc.SetColumn(USERLISTVIEW_COL_NAME, &pCol);
|
|
|
|
Invalidate();
|
|
}
|
|
|
|
void CUserListView::ClearView()
|
|
{
|
|
CListCtrl& lc = GetListCtrl();
|
|
lc.DeleteAllItems();
|
|
}
|
|
|
|
void CUserListView::UpdateClientsList(CPtrList* pClientstList)
|
|
{
|
|
ASSERT(pClientstList);
|
|
|
|
CListCtrl& lc = GetListCtrl();
|
|
|
|
int nSelected = lc.GetNextItem(-1, LVNI_ALL|LVNI_SELECTED);
|
|
lc.DeleteAllItems();
|
|
|
|
int nCount = pClientstList->GetCount();
|
|
for(int i = 0; i < nCount; i++) {
|
|
|
|
sClientComInfos* pClientCom = (sClientComInfos*)pClientstList->GetAt(pClientstList->FindIndex(i));
|
|
ASSERT(pClientCom);
|
|
|
|
LV_ITEM lvItem;
|
|
ZeroMemory(&lvItem, sizeof(LV_ITEM));
|
|
lvItem.mask = LVIF_TEXT; // | LVIF_IMAGE;
|
|
// lvItem.iImage = pComData->uSignIcon;
|
|
lvItem.pszText = (LPSTR)(LPCTSTR)pClientCom->strID; // pComData->szFrom.GetBuffer(pComData->szFrom.GetLength());
|
|
lvItem.cchTextMax = pClientCom->strID.GetLength(); // pComData->szFrom.GetLength();
|
|
// pComData->szFrom.ReleaseBuffer();
|
|
lc.InsertItem(&lvItem);
|
|
}
|
|
|
|
|
|
// m_pMainFrame->ClearClientView();
|
|
|
|
if (nCount > 0 && nSelected > -1) {
|
|
|
|
lc.SetItemState(nSelected, LVIS_SELECTED|LVIS_FOCUSED,
|
|
LVIS_SELECTED|LVIS_FOCUSED);
|
|
// ShowClientInfos();
|
|
}
|
|
}
|