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

📄 setblack.cpp

📁 视频播放控制器程序
💻 CPP
字号:
// SetBlack.cpp : implementation file
//

#include "stdafx.h"
#include "LiveController.h"
#include "SetBlack.h"

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

/////////////////////////////////////////////////////////////////////////////
// CSetBlack dialog

CNameManage *bHead = NULL;  //总的头指针
CNameManage *bt=bHead;  
CNameManage *BlackName;  
int Nbcount = 0;
int Cbcount;

CSetBlack::CSetBlack(CWnd* pParent /*=NULL*/)
	: CDialog(CSetBlack::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSetBlack)
	m_addBlackName = _T("");
	//}}AFX_DATA_INIT
}

void CSetBlack::ShowBlackName(CNameManage *ph)
{
	CString strTemp;
	LVITEM tempLvi;
	tempLvi.mask = LVIF_IMAGE | LVIF_TEXT;
	tempLvi.stateMask = -1;
	int nIndex=0;
	while (ph)
	{
		// name
		tempLvi.iItem = nIndex;
		tempLvi.iSubItem = 0;
		tempLvi.pszText = (char *)(LPCTSTR)(ph->name);
		m_ctrSetBlackList.InsertItem(&tempLvi);

		// type
		tempLvi.iSubItem = 1;
		tempLvi.pszText = (char *)(LPCTSTR)(ph->type);
		m_ctrSetBlackList.SetItem( &tempLvi );
		ph = ph->pNext;
		nIndex++;
	}
}


void CSetBlack::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSetBlack)
	DDX_Control(pDX, IDC_BlackList, m_ctrSetBlackList);
	DDX_Text(pDX, IDC_AddBlackName, m_addBlackName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSetBlack, CDialog)
	//{{AFX_MSG_MAP(CSetBlack)
	ON_BN_CLICKED(IDC_BN_ImportBlack, OnBNImportBlack)
	ON_BN_CLICKED(IDC_BN_ADDBlack, OnBNADDBlack)
	ON_BN_CLICKED(IDC_BN_DELBlack, OnBNDELBlack)
	ON_NOTIFY(NM_CLICK, IDC_BlackList, OnClickBlackList)
	ON_BN_CLICKED(IDC_BN_InUse, OnBNInUse)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSetBlack message handlers

void CSetBlack::OnBNImportBlack() 
{
	// TODO: Add your control notification handler code here
	CNameManage *head = NULL;	//导入文件的头指针
	CNameManage *q = head;		//功能如p
	CString temp;
	static char BASED_CODE szFilter[] = "(*.ini)|*.ini||"; 
	CFileDialog filedlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter,NULL);
	int i = 0;
	if (filedlg.DoModal()==IDOK)
	{
		CString FileName;
		FileName = filedlg.GetPathName();
		FileName = Replacer(FileName);

		BlackName = new CNameManage();
		BlackName->index = i;
		temp.Format("%d",BlackName->index);
		GetPrivateProfileString(temp,"name","Default",BlackName->name.GetBuffer(MAX_PATH),MAX_PATH,FileName);
		GetPrivateProfileString(temp,"type","Default",BlackName->type.GetBuffer(MAX_PATH),MAX_PATH,FileName);

		head = BlackName;
		q = BlackName;
		i++;
		for (q=head;q!=NULL;q=q->pNext)
		{
			BlackName = new CNameManage();
			BlackName->index = i;
			BlackName->pNext = NULL;
			temp.Format("%d",BlackName->index);
			GetPrivateProfileString(temp,"name","Default",BlackName->name.GetBuffer(MAX_PATH),MAX_PATH,FileName);
			GetPrivateProfileString(temp,"type","Default",BlackName->type.GetBuffer(MAX_PATH),MAX_PATH,FileName);
			if (BlackName->name == "Default")
			{
				delete BlackName;
				break;
			}
			q->pNext = BlackName;
			i++;
		}
		if (bHead == NULL)
		{
			bHead = head;
			bt = q;
		}
		else
		{
			bt->pNext = head;//导入与原有连接起来
			bt = q;
		}	
		m_ctrSetBlackList.DeleteAllItems();
		CNameManage *ptemp;
		ptemp = bHead;
		if (ptemp->name == "Default" && ptemp->type == "Default")
		{
			AfxMessageBox("文件内容为空!");
			m_ctrSetBlackList.DeleteAllItems();
		}
		else
			ShowBlackName(ptemp) ; //将文件内容显示在列表中
	}
	else
		return;
}

BOOL CSetBlack::OnInitDialog() 
{
	CDialog::OnInitDialog();
	m_pSetBlackName_H = NULL;
	m_pSetBlackName_T = NULL;
	
	// TODO: Add extra initialization here
	LVCOLUMN	lvcol;
	lvcol.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT;
	lvcol.fmt = LVCFMT_LEFT;
	lvcol.pszText = _T( "用户ID" );
	lvcol.iSubItem = 1;
	m_ctrSetBlackList.InsertColumn( 0, &lvcol );
	m_ctrSetBlackList.SetColumnWidth( 0, 120);
	lvcol.pszText = _T( "类型" );
	m_ctrSetBlackList.InsertColumn( 1, &lvcol );
	m_ctrSetBlackList.SetColumnWidth( 1, 90 );
	
	
	bnSelect = -1;
	GetDlgItem(IDC_BN_DELBlack)->EnableWindow(FALSE);
	
	DWORD dwStyle = m_ctrSetBlackList.GetExtendedStyle();
	dwStyle |= LVS_EX_FULLROWSELECT;
	dwStyle |= LVS_EX_GRIDLINES;
    m_ctrSetBlackList.SetExtendedStyle(dwStyle);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSetBlack::OnBNADDBlack() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CNameManage *newname;
	newname = new CNameManage();
	Cbcount = m_ctrSetBlackList.GetItemCount();

	CString strTemp;
	LVITEM tempLvi;
	tempLvi.mask = LVIF_IMAGE | LVIF_TEXT;
	tempLvi.stateMask = -1;
	CString newtype="0";   //////////////////黑名单类型
	if (m_addBlackName.IsEmpty())
	{
		AfxMessageBox("用户不能为空,请重新填写!");
	}
	else
	{
		// word
		tempLvi.iItem = m_ctrSetBlackList.GetItemCount();
		tempLvi.iSubItem = 0;
		tempLvi.pszText = (char *)(LPCTSTR)(m_addBlackName);
		m_ctrSetBlackList.InsertItem(&tempLvi);

		// type
		tempLvi.iSubItem = 1;
		tempLvi.pszText = (char *)(LPCTSTR)(newtype);
		m_ctrSetBlackList.SetItem( &tempLvi );



		if ( bHead == NULL)
		{
		
			if (Cbcount==0)
			{
				bHead = newname;
				bt = newname;
				newname->index = Nbcount;
				newname->name = m_addBlackName;
				newname->type = newtype;
				newname->pNext = NULL;
				Nbcount++;
			}
			else
			{
				newname->index = Nbcount;
				newname->name = m_addBlackName;
				newname->type = newtype;
				newname->pNext = NULL;
				bt->pNext = newname;
				bt = bt->pNext;
				Nbcount++;
			}
	
		}
		else
		{
			newname->index = Cbcount;
			newname->name = m_addBlackName;
			newname->pNext = NULL;
			newname->type = newtype;
			bt->pNext = newname;
			bt = bt->pNext;
			Cbcount++;
		}

	}
	m_addBlackName.Empty();
	UpdateData(FALSE);	
}

void CSetBlack::OnBNDELBlack() 
{
	// TODO: Add your control notification handler code here
	CNameManage *temp = bHead;
	if (bnSelect==0)
	{
		CNameManage *pSave = bHead;
		bHead = bHead->pNext;
		delete pSave;
	}
	else
	{
		for (int i=1;temp->pNext!=NULL;i++)
		{
			if (i==bnSelect)
			{
				CNameManage *pdelete = temp->pNext;
				temp->pNext= temp->pNext->pNext;
				delete pdelete;
				break;
			}
			else
				temp = temp->pNext;
		}

	}

	m_ctrSetBlackList.DeleteAllItems();////////////////清空列表

	CNameManage *ptemp;
	ptemp = bHead;
	ShowBlackName(ptemp); ///////////////////////////重新显示
}

void CSetBlack::OnClickBlackList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	LPNMITEMACTIVATE pNmitem = (LPNMITEMACTIVATE)pNMHDR;
	UINT uFlags;
	bnSelect= m_ctrSetBlackList.HitTest( CPoint(pNmitem->ptAction), &uFlags );
	if ( bnSelect < 0 )
	{
		GetDlgItem(IDC_BN_DELBlack)->EnableWindow(FALSE);	
		*pResult = 0;
		return;
	}
	
	GetDlgItem(IDC_BN_DELBlack)->EnableWindow(TRUE);
	*pResult = 0;
}

void CSetBlack::OnBNInUse() 
{
	// TODO: Add your control notification handler code here
	m_pSetBlackName_H = bHead;
	m_pSetBlackName_T= bt;

	bHead = NULL;
	bt = NULL;
	CDialog::EndDialog(IDC_BN_InUse);
}

⌨️ 快捷键说明

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