📄 setblack.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 + -