⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dummylist.cpp

📁 對網只操作的函數,很不錯
💻 CPP
字号:
// DummyList.cpp : implementation file
//

#include "stdafx.h"
#include "GetLink.h"
#include "DummyList.h"
#include "GetList.h"
#include "GetLinkDoc.h"
#include "FileSet.h"
#include "MainFrm.h"
#include "AdrCtrlView.h"
#include "SortClass.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDummyList

IMPLEMENT_DYNCREATE(CDummyList, CView)

CDummyList::CDummyList()
{
	m_Sort=TRUE;
	item_Ctrl=-1;
}

CDummyList::~CDummyList()
{
}


BEGIN_MESSAGE_MAP(CDummyList, CView)
	//{{AFX_MSG_MAP(CDummyList)
	ON_WM_CREATE()
	ON_NOTIFY(NM_CLICK, IDC_GET_LIST, OnClickList1)
	ON_NOTIFY(LVN_COLUMNCLICK, IDC_GET_LIST, OnItemclickList1)
	ON_WM_SIZE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDummyList drawing

void CDummyList::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: add draw code here
}

/////////////////////////////////////////////////////////////////////////////
// CDummyList diagnostics

#ifdef _DEBUG
void CDummyList::AssertValid() const
{
	CView::AssertValid();
}

void CDummyList::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CDummyList message handlers

void CDummyList::OnInitialUpdate() 
{
	CView::OnInitialUpdate();
    CGetLinkDoc *pDoc=(CGetLinkDoc *)GetDocument();

	pDoc->set.Open("GetLink.dat");

	CString str;
	int i=0;

	while(!pDoc->set.IsEOF())
	{
		str.Format("%03d",pDoc->set.NO);
		m_ctrGetList.InsertItem(i,str);

		m_ctrGetList.SetItemText(i,0,str);		
		m_ctrGetList.SetItemText(i,1,pDoc->set.Name);
		m_ctrGetList.SetItemText(i,2,pDoc->set.Type1);
		m_ctrGetList.SetItemText(i,3,pDoc->set.Type2);
		m_ctrGetList.SetItemText(i,4,pDoc->set.Type3);
		m_ctrGetList.SetItemText(i,5,pDoc->set.Mark);
	
		pDoc->set.MoveNext();
		i++;
	}

	pDoc->iTotal = i;
	pDoc->iItem=-1;//设初始LIST控件位置为空,避免滚到LIST控件最后一行
	// TODO: Add your specialized code here and/or call the base class
	
}

int CDummyList::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
 	m_ctrGetList.Create(
		LVS_REPORT | WS_VISIBLE | WS_CHILD,
			CRect( 0, 0 , 830, 250),	
			this, IDC_GET_LIST);

	m_ctrGetList.SetTextColor(RGB(255,255,255));
	m_ctrGetList.SetTextBkColor(RGB(69,83,103));
	m_ctrGetList.SetBkColor(RGB(69,83,103));

	m_ctrGetList.InsertColumn(0,"排名",LVCFMT_LEFT,45);
	m_ctrGetList.InsertColumn(1,"地址",LVCFMT_CENTER,250);
	m_ctrGetList.InsertColumn(2,"大类别",LVCFMT_CENTER,80);
	m_ctrGetList.InsertColumn(3,"小类别1",LVCFMT_CENTER,80);
	m_ctrGetList.InsertColumn(4,"小类别2",LVCFMT_CENTER,80);
	m_ctrGetList.InsertColumn(5,"简评",LVCFMT_CENTER,290);
	// Set Extended style.
	m_ctrGetList.SetExtendedStyle( 
		LVS_EX_FULLROWSELECT | LVS_EX_ONECLICKACTIVATE |
		LVS_EX_UNDERLINEHOT | 
		LVS_EX_INFOTIP |
		LVS_EX_FLATSB  |
		LVS_EX_GRIDLINES |
		LVS_EX_CHECKBOXES |
		~LVS_NOSCROLL  //设置卷动风格
		);
	
	return 0;
}

BOOL CDummyList::PreCreateWindow(CREATESTRUCT& cs) 
{
	// TODO: Add your specialized code here and/or call the base class
	cs.style |= (LVS_SHOWSELALWAYS | LVS_REPORT | 
               /*LVS_SINGLESEL | */LVS_NOSORTHEADER);
	
	return CView::PreCreateWindow(cs);
}

void CDummyList::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	CView::OnActivateView(bActivate, pActivateView, pDeactiveView);
}
void CDummyList::DoSelect(CString filter)
{
	if(filter!="")
	{
	CGetLinkDoc *pDoc=(CGetLinkDoc *)GetDocument();
	CString str;
	int i=0;	

	m_ctrGetList.DeleteAllItems();
    pDoc->set.MoveFirst();
	while(!pDoc->set.IsEOF())
	{
		if(pDoc->set.Type1==filter||pDoc->set.Type2==filter||pDoc->set.Type3==filter)
		{
		str.Format("%03d",pDoc->set.NO);
		m_ctrGetList.InsertItem(i,str);

		m_ctrGetList.SetItemText(i,0,str);		
		m_ctrGetList.SetItemText(i,1,pDoc->set.Name);
		m_ctrGetList.SetItemText(i,2,pDoc->set.Type1);
		m_ctrGetList.SetItemText(i,3,pDoc->set.Type2);
		m_ctrGetList.SetItemText(i,4,pDoc->set.Type3);
		m_ctrGetList.SetItemText(i,5,pDoc->set.Mark);
	    i++;
		}
		pDoc->set.MoveNext();		
	}
	pDoc->iTotal = i;
	pDoc->iItem=-1;//设初始LIST控件位置为空,避免滚到LIST控件最后一行

	}
}

void CDummyList::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	//以下采用的是方法1.由视图处理控件Notify消息的方法,
	//另方法2. 消息反射见MSDN技巧62
	//方法3.重载自己的控件类进行子类化
	//方法4.在视图类中用OnCmdMsg进行消息重定向 见编程实例221和Processmgr
	// TODO: Add your control notification handler code here
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	int iItem = pNMListView->iItem; 
    item_Ctrl=iItem;//控件中选中行数

	CGetLinkDoc *pDoc=(CGetLinkDoc *)GetDocument();

	if (!pDoc->OnUpdate) //更新完毕才允许重选中
	{
	   if (iItem>=0)
	   {
		pDoc->m_nNO = atoi(LPCTSTR(m_ctrGetList.GetItemText(iItem,0)));
		pDoc->m_strName = m_ctrGetList.GetItemText(iItem,1);
		pDoc->m_Type1 = m_ctrGetList.GetItemText(iItem,2);
		pDoc->m_Type2 = m_ctrGetList.GetItemText(iItem,3);
		pDoc->m_Type3 = m_ctrGetList.GetItemText(iItem,4);
		pDoc->m_Mark  = m_ctrGetList.GetItemText(iItem,5);

	   }
	   else
	   {
		pDoc->m_nNO = 0;
		pDoc->m_strName = _T("");
		pDoc->m_Type1 = _T("");
		pDoc->m_Type2 = _T("");
		pDoc->m_Type3 = _T("");
		pDoc->m_Mark  = _T("");  
	   }
	   //通知CADRCTRALVIEW更新
	   if(pDoc->m_ViewType=="CAdrCtrlView")
	   {
		CMainFrame* pMainFrame =(CMainFrame*)AfxGetApp()->m_pMainWnd;
	    CAdrCtrlView* AdrView=(CAdrCtrlView*)pMainFrame->m_wndSplitter3.GetPane(0,1);
	    AdrView->MyUpdate();	//调用显示视图更新函数
	   }
	}
	CString name=m_ctrGetList.GetItemText(iItem,1);
    if(name!="")
	pDoc->iItem=pDoc->set.FindItem(name); //根据LIST控件地址字段名查找记录号	

	*pResult = 0;
}

void CDummyList::MyUpdate()
{
		CGetLinkDoc *pDoc=(CGetLinkDoc *)GetDocument();
		if(pDoc->m_Act=="添加")
		{
		 CString str;
		 str.Format("%03d",pDoc->set.NO);
		 m_ctrGetList.InsertItem(pDoc->iTotal,str);
		 m_ctrGetList.SetItemText(pDoc->iTotal,0,str);
		 m_ctrGetList.SetItemText(pDoc->iTotal,1,pDoc->set.Name);
		 m_ctrGetList.SetItemText(pDoc->iTotal,2,pDoc->set.Type1);
		 m_ctrGetList.SetItemText(pDoc->iTotal,3,pDoc->set.Type2);
		 m_ctrGetList.SetItemText(pDoc->iTotal,4,pDoc->set.Type3);
		 m_ctrGetList.SetItemText(pDoc->iTotal,5,pDoc->set.Mark);
         m_ctrGetList.EnsureVisible(pDoc->iTotal,0);
         //m_ctrGetList.EnsureVisible(0,1);

		 pDoc->iTotal++;
         //m_ctrGetList.m_nCount=pDoc->iTotal;
		 pDoc->m_Act=="";

		}
		if(pDoc->m_Act=="删除")
        {
         m_ctrGetList.DeleteItem(item_Ctrl);
		 pDoc->iItem=-1;
		 pDoc->iTotal--;  //更新控件LIST最大记录数目
		 pDoc->m_Act=="";
		}
		if(pDoc->m_Act=="修改")
        {
		CString str;
		str.Format("%03d",pDoc->set.NO);
		m_ctrGetList.SetItemText(item_Ctrl,0,str);
		m_ctrGetList.SetItemText(item_Ctrl,1,pDoc->set.Name);
		m_ctrGetList.SetItemText(item_Ctrl,2,pDoc->set.Type1);
		m_ctrGetList.SetItemText(item_Ctrl,3,pDoc->set.Type2);
		m_ctrGetList.SetItemText(item_Ctrl,4,pDoc->set.Type3);
		m_ctrGetList.SetItemText(item_Ctrl,5,pDoc->set.Mark);
		 pDoc->m_Act=="";
		}	
}
void CDummyList::OnItemclickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
	// TODO: Add your control notification handler code here
	// bAscending will be use to order from lower to higher or higher to lower
	
    NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	bool b_IsNumber;
	if(pNMListView->iItem==0)
	b_IsNumber =TRUE;
	else
	b_IsNumber =FALSE;

	CSortClass csc(&(this->m_ctrGetList), pNMListView->iSubItem, b_IsNumber);
	m_Sort=!m_Sort;//升序或降序
	csc.Sort(m_Sort);
	
	*pResult = 0;

}



void CDummyList::OnSize(UINT nType, int cx, int cy) 
{
	CView::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
    CRect rcOutput;
    GetClientRect(&rcOutput);
    m_ctrGetList.MoveWindow(rcOutput);//使LISTCRTL控件布满整个视图	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -