📄 userlistview.cpp
字号:
// UserListView.cpp : implementation file
//
#include "stdafx.h"
#include "Monitor.h"
#include "UserlistView.h"
#include "MonitorDoc.h"
#include "UserChoice.h"
#include "UserEdit.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CUserListView
IMPLEMENT_DYNCREATE(CUserListView, CListView)
CUserListView::CUserListView()
{
}
CUserListView::~CUserListView()
{
}
BEGIN_MESSAGE_MAP(CUserListView, CListView)
//{{AFX_MSG_MAP(CUserListView)
ON_WM_CREATE()
ON_NOTIFY_REFLECT(NM_RETURN, OnReturn)
ON_NOTIFY_REFLECT(NM_CLICK, OnClick)
ON_WM_LBUTTONDOWN()
ON_NOTIFY_REFLECT(NM_RCLICK, OnRclick)
ON_WM_RBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CUserListView drawing
void CUserListView::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
// TODO: add draw code here
}
/////////////////////////////////////////////////////////////////////////////
// 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::OnInitialUpdate()
{
CListView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
CListCtrl& MyList=GetListCtrl( );
MyList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP
|LVS_EX_INFOTIP|LVS_EX_ONECLICKACTIVATE|LVS_EX_TWOCLICKACTIVATE);
MyList.InsertColumn(0," 名称",LVCFMT_CENTER,70,0);
MyList.InsertColumn(1,"开始日期",LVCFMT_CENTER,120,2);
MyList.InsertColumn(2,"结束日期",LVCFMT_CENTER,120,3);
LVITEM myItem;
myItem.mask=LVIF_TEXT ;
CMonitorDoc* pDoc = (CMonitorDoc*) GetDocument();
CObArray *myUserList=pDoc->AllUserList;
CXhinfo *myInfo;
int length=myUserList->GetSize();
for(int i=0;i<length;i++)
{
myInfo=(CXhinfo*)myUserList->GetAt(i);
myItem.iItem=i;
myItem.pszText=(char*)(LPCTSTR)myInfo->Name;
myItem.iSubItem=0;
MyList.InsertItem(&myItem);
myItem.iSubItem=1;
CString t=myInfo->Begin.Format("%Y/%m/%d");
if(t!="1899/12/30")
myItem.pszText=(char*)(LPCTSTR)t;
else
myItem.pszText="";
MyList.SetItem(&myItem);
myItem.iSubItem=2;
t=myInfo->End.Format("%Y/%m/%d");
if(t!="1899/12/30")
myItem.pszText=(char*)(LPCTSTR)t;
else
myItem.pszText="";
MyList.SetItem(&myItem);
}
}
int CUserListView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
lpCreateStruct->style |= LVS_REPORT|LVS_EDITLABELS;
if (CListView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
return 0;
}
void CUserListView::OnReturn(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CListCtrl& mydata = (CListCtrl&) GetListCtrl();
LVHITTESTINFO pHitTestInfo;
pHitTestInfo.pt =myPoint;
pHitTestInfo.flags=LVHT_ONITEMSTATEICON;
POSITION pos = mydata.GetFirstSelectedItemPosition();
int iIndex=mydata.GetNextSelectedItem(pos);
if(iIndex<0) return;
CMonitorDoc* pDoc = (CMonitorDoc*) GetDocument();
CObArray *myUserList=pDoc->AllUserList;
CUserChoice *myChoice;
myChoice = new CUserChoice;
myChoice->SetData((CXhinfo*)myUserList->GetAt(iIndex),pDoc->TypeList);
myChoice->Create(IDD_USERCHOICE);
*pResult = 0;
}
void CUserListView::OnClick(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CListCtrl& mydata = (CListCtrl&) GetListCtrl();
LVHITTESTINFO pHitTestInfo;
pHitTestInfo.pt =myPoint;
pHitTestInfo.flags=LVHT_ONITEMSTATEICON;
int iHitTest=mydata.SubItemHitTest(&pHitTestInfo);
if (pHitTestInfo.iSubItem<=0||pHitTestInfo.iItem<0) return;
CMonitorDoc* pDoc = (CMonitorDoc*) GetDocument();
CObArray *myUserList=pDoc->AllUserList;
CUserChoice *myChoice;
myChoice = new CUserChoice;
myChoice->SetData((CXhinfo*)myUserList->GetAt(iHitTest),pDoc->TypeList);
myChoice->Create(IDD_USERCHOICE);
*pResult = 0;
}
void CUserListView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
myPoint=point;
CListView::OnLButtonDown(nFlags, point);
}
void CUserListView::OnRclick(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CListCtrl& mydata = (CListCtrl&) GetListCtrl();
LVHITTESTINFO pHitTestInfo;
pHitTestInfo.pt =myPoint;
pHitTestInfo.flags=LVHT_ONITEMSTATEICON;
int iHitTest=mydata.SubItemHitTest(&pHitTestInfo);
if (pHitTestInfo.iSubItem<=0||pHitTestInfo.iItem<0) return;
CMonitorDoc* pDoc = (CMonitorDoc*) GetDocument();
CObArray *myUserList=pDoc->AllUserList;
CUserEdit myEdit;
myEdit.SetData((CXhinfo*)myUserList->GetAt(iHitTest),pDoc->TypeList);
myEdit.DoModal();
*pResult = 0;
}
void CUserListView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
myPoint=point;
CListView::OnLButtonDown(nFlags, point);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -