editlinkformat.cpp

来自「深入浅出Visual C++入门进阶与应用实例 随书光盘 作者 何志丹」· C++ 代码 · 共 154 行

CPP
154
字号
// EditLinkFormat.cpp : implementation file
//

#include "stdafx.h"
#include "EditLinkFormat.h"

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

/////////////////////////////////////////////////////////////////////////////
// CEditLinkFormatDlg dialog


CEditLinkFormatDlg::CEditLinkFormatDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CEditLinkFormatDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CEditLinkFormatDlg)
	m_strLinkFormat = _T("");
	m_strWebName = _T("");
	//}}AFX_DATA_INIT
}


void CEditLinkFormatDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEditLinkFormatDlg)
	DDX_Control(pDX, IDC_LISTCTRL, m_listCtrl);
	DDX_Text(pDX, IDC_LINK_FORMAT, m_strLinkFormat);
	DDX_Text(pDX, IDC_WEB_NAME, m_strWebName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CEditLinkFormatDlg, CDialog)
	//{{AFX_MSG_MAP(CEditLinkFormatDlg)
	ON_BN_CLICKED(IDC_ADD, OnAdd)
	ON_BN_CLICKED(IDC_EDIT, OnEdit)
	ON_BN_CLICKED(IDC_DELETE, OnDelete)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LISTCTRL, OnItemchangedListctrl)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEditLinkFormatDlg message handlers

BOOL CEditLinkFormatDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	m_listCtrl.InsertColumn(0,"网站名称",LVCFMT_LEFT,60);
	m_listCtrl.InsertColumn(1,"链接格式",LVCFMT_LEFT,253);

	CWebInfoSet rs ;
	rs.Open();
	while(!rs.IsEOF())
	{
		int nItem = m_listCtrl.InsertItem(0,rs.m_WebName);
		m_listCtrl.SetItemText(nItem,1,rs.m_LinkFormat);
		m_listCtrl.SetItemData(nItem,(DWORD)rs.m_ID);
		if(1 == m_listCtrl.GetItemCount())
		{
			m_strWebName    = rs.m_WebName ;
			m_strLinkFormat = rs.m_LinkFormat;
			UpdateData(false);
		}
		rs.MoveNext();
	}
	rs.Close();
	
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CEditLinkFormatDlg::OnAdd() 
{
	UpdateData(true);
	
	long nID ;
	if(!CWebInfoSet::AddLinkFormat(m_strWebName,m_strLinkFormat,nID))
	{//更改数据库内容
		AfxMessageBox("数据库添加记录失败");
		return  ;
	}

	//更新界面
	int nItem = m_listCtrl.InsertItem(0,m_strWebName);
	m_listCtrl.SetItemText(nItem,1,m_strLinkFormat);
	m_listCtrl.SetItemData(nItem,(DWORD)nID);
}

void CEditLinkFormatDlg::OnEdit() 
{
	UpdateData(true);
	
	POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
	if(NULL == pos)
		AfxMessageBox("请选择一条记录,再点删除");
	int nItem = m_listCtrl.GetNextSelectedItem(pos);
	long nID = m_listCtrl.GetItemData(nItem);

	if(!CWebInfoSet::EditLinkFormat(nID,m_strWebName,m_strLinkFormat))
	{//修改数据库内容
		AfxMessageBox("数据库中修改记录失败");
		return ;
	}

	//修改界面
	m_listCtrl.SetItemText(nItem,0,m_strWebName);
	m_listCtrl.SetItemText(nItem,1,m_strLinkFormat);

	UpdateWindow();
	Invalidate();
}

void CEditLinkFormatDlg::OnDelete() 
{
	UpdateData(true);
	
	POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
	if(NULL == pos)
		AfxMessageBox("请选择一条记录,再点删除");
	int nItem = m_listCtrl.GetNextSelectedItem(pos);
	long nID = m_listCtrl.GetItemData(nItem);

	if(!CWebInfoSet::DeleteLinkFormat(nID))
	{//修改数据库
		AfxMessageBox("从数据库中删除记录失败");
		return ;
	}

	m_listCtrl.DeleteItem(nItem);//修改界面
}





void CEditLinkFormatDlg::OnItemchangedListctrl(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	int nItem = pNMListView->iItem ;
	
	m_strWebName	= m_listCtrl.GetItemText(nItem,0);
	m_strLinkFormat = m_listCtrl.GetItemText(nItem,1);
	UpdateData(false);
	
	*pResult = 0;
}

⌨️ 快捷键说明

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