【VC开源代码栏目提醒】:以下是网学会员为您推荐的VC开源代码-AddressBookView.cpp,希望本篇文章对您学习有所帮助。
// AddressBookView.cpp : implementation of the CAddressBookView class
//
#include "stdafx.h"
#include "AddressBook.h"
#include "AddressBookDoc.h"
#include "AddressBookView.h"
#include "Hints.h"
#include "DbChangeDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAddressBookView
IMPLEMENT_DYNCREATE(CAddressBookView, CListView)
BEGIN_MESSAGE_MAP(CAddressBookView, CListView)
//{{AFX_MSG_MAP(CAddressBookView)
ON_COMMAND(ID_OPEN_DABSE, OnOpenDabse)
ON_UPDATE_COMMAND_UI(ID_OPEN_DABSE, OnUpdateOpenDabse)
ON_COMMAND(ID_DELETE, OnDelete)
ON_COMMAND(ID_NEWRECORD, OnNewrecord)
ON_COMMAND(ID_REFRASH, OnRefrash)
ON_UPDATE_COMMAND_UI(ID_REFRASH, OnUpdateRefrash)
ON_UPDATE_COMMAND_UI(ID_DELETE, OnUpdateDelete)
ON_COMMAND(ID_UPDATADB, OnUpdataDb)
ON_UPDATE_COMMAND_UI(ID_UPDATADB, OnUpdateUpdataDb)
ON_WM_LBUTTONDBLCLK()
ON_WM_RBUTTONDOWN()
ON_COMMAND(ID_POP_NEWRECORD, OnPopNewrecord)
ON_COMMAND(ID_POP_UPDATE, OnPopUpdate)
ON_COMMAND(ID_POP_DELETE, OnPopDelete)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
UINT CAddressBookView::m_ColumnLabelID [NUM_COLUMNS] =
{
IDS_TABLE_HEAD_NAME,
IDS_TABLE_HEAD_WPHONE,
IDS_TABLE_HEAD_MPHONE,
IDS_TABLE_HEAD_HPHONE,
IDS_TABLE_HEAD_NOTE,
};
int CAddressBookView::m_ColumnFormat [NUM_COLUMNS] =
{
LVCFMT_LEFT, LVCFMT_LEFT, LVCFMT_LEFT, LVCFMT_LEFT
};
// CAddressBookView construction/destruction
CAddressBookView::CAddressBookView()
{
// TODO: add construction code here
}
CAddressBookView::~CAddressBookView()
{
if(m_pImageList!=NULL) delete m_pImageList;
}
BOOL CAddressBookView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style |= LVS_REPORT |
LVS_SINGLESEL |
LVS_SHOWSELALWAYS |
LVS_ICON ;
return CListView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CAddressBookView drawing
void CAddressBookView::OnDraw(CDC* pDC)
{
CAddressBookDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
void CAddressBookView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
CListCtrl &lc = GetListCtrl();
int Column;
LV_COLUMN LVColumn; // column info of one column in list control
CAddressBookDoc *pDoc = (CAddressBookDoc*) GetDocument();
DWORD dwStyle = ListView_GetExtendedListViewStyle(GetListCtrl());
//Add the full row select and grid line style to the existing extended styles
dwStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | /*LVS_EX_SUBITEMIMAGES |*/
LVS_EX_HEADERDRAGDROP | LVS_EX_TRACKSELECT;
ListView_SetExtendedListViewStyle (GetListCtrl(),dwStyle);
lc.DeleteAllItems ();// regular cleanup
m_pImageList = new CImageList();
m_pImageList->Create(IDB_BITMAP1, 16, 1, RGB(0,0,0));
GetListCtrl().SetImageList(m_pImageList, LVSIL_SMALL);
//initialize the columns (insert columns)
m_ColumnWidth [COL_NAME ] = 100;
m_ColumnWidth [COL_WPHONE ] = 100;
m_ColumnWidth [COL_MPHONE ] = 100;
m_ColumnWidth [COL_HPHONE ] = 100;
m_ColumnWidth [COL_NOTE ] = 200;
// set header and format for all visible columns
LVColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
{
for (Column = 0; (Column < NUM_COLUMNS); Column++)
{
CString HeaderString;
// fill header data
HeaderString.LoadString (m_ColumnLabelID[Column]);
LVColumn.iSubItem = Column;
LVColumn.pszText = (LPTSTR) (LPCTSTR) HeaderString;
LVColumn.cx = m_ColumnWidth [Column];
LVColumn.fmt = m_ColumnFormat [Column];
lc.InsertColumn (Column, &LVColumn);
}
}
CString strDbPath;
//SetDatabasePath("");
strDbPath = GetDatabasePath();
if(!strDbPath.IsEmpty())
{
pDoc->OnNewDocument(); pDoc->OnOpenDocument(strDbPath);
}
else
{
AfxMessageBox(_T("Please specify new database location"), MB_OK | MB_ICONEXCLAMATION);
CFileDialog dlg(TRUE,".mdb", "Address Book.mdb",
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
0,
this);
if (dlg.DoModal() == IDOK)
{
pDoc->OnNewDocument();
SetDatabasePath(dlg.GetPathName());
pDoc->OnOpenDocument(dlg.GetPathName());
if (pDoc->m_bFileOpen)
pDoc->UpdateAllViews(NULL, HINT_DB_OPENED, NULL);
}
}
SetFocus ();
lc.SetItem (0, 0, LVIF_STATE, NULL, 0, LVIS_FOCUSED , LVIS_FOCUSED, 0);
// TODO: You may populate your ListView with items by directly accessing
// its list control through a call to GetListCtrl().
}
/////////////////////////////////////////////////////////////////////////////
// CAddressBookView diagnostics
#ifdef _DEBUG
void CAddressBookView::AssertValid() const
{
CListView::AssertValid();
}
void CAddressBookView::Dump(CDumpContext& dc) const
{
CListView::Dump(dc);
}
CAddressBookDoc* CAddressBookView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAddressBookDoc)));
return (CAddressBookDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CAddressBookView message handlers
void CAddressBookView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
// TODO: Add your specialized code here and/or call the base class
CListCtrl &lc= GetListCtrl();
CAddressBookDoc *pDoc = (CAddressBookDoc*)GetDocument();
CDaoRecordsetAccess *pRS;
pRS = new CDaoRecordsetAccess(pDoc->m_pDB);
int i=0;
switch(lHint)
{
case HINT_DB_OPENED:
lc.DeleteAllItems();
pRS->Open(dbOpenDynaset,pRS->GetDefaultSQL(),0);
pRS->MoveFirst();
while (!pRS->IsEOF())
{
int ItemIndex = lc.InsertItem(LVIF_TEXT | LVIF_PARAM, i, pRS->m_Name, 0, 0, 0, 0);
int SubitemIndex = 1;
lc.SetItem (ItemIndex, SubitemIndex++, LVIF_TEXT, pRS->m_Address, 0, 0, 0, 0);
lc.SetItem (ItemIndex, SubitemIndex++, LVIF_TEXT, pRS->m_WorkPhone, 0, 0, 0, 0);
lc.SetItem (ItemIndex, SubitemIndex++, LVIF_TEXT, pRS->m_HomePhone, 0, 0, 0, 0);
lc.SetItem (ItemIndex, SubitemIndex++, LVIF_TEXT, pRS->m_Notes, 0, 0, 0, 0);
pRS->MoveNext();
}
break;
case HINT_NEW_RECORD:
CDbChangeDlg dlg;
CDaoRecordsetAccess *pRS1;
pRS1 = new CDaoRecordsetAccess(pDoc->m_pDB);
ASSERT(pRS1 != NULL);
try
{
pRS1->Open();
long numRec = pRS1->GetRecordCount();
}
catch (CDaoException* e)
{
dele
上一篇:
AddressBookDoc.cpp
下一篇:
法律专业开题报告范文