?? phonebookdlg.cpp
字號:
// PhoneBookDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Test.h"
#include "PhoneBookDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "AddPhoneDlg.h"
/////////////////////////////////////////////////////////////////////////////
// CPhoneBookDlg dialog
CPhoneBookDlg::CPhoneBookDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPhoneBookDlg::IDD, pParent)
{
m_nOpenFlag = 0;
//{{AFX_DATA_INIT(CPhoneBookDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CPhoneBookDlg::CPhoneBookDlg(CWnd* pParent , int nOpenFlag)
: CDialog(CPhoneBookDlg::IDD, pParent)
{
if(pParent != NULL)
m_pDlgTest = (CTestDlg*)pParent;
else
m_pDlgTest = NULL;
m_nOpenFlag = nOpenFlag;
}
CPhoneBookDlg::~CPhoneBookDlg()
{
}
void CPhoneBookDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPhoneBookDlg)
DDX_Control(pDX, IDC_PHONELIST, m_ctrlPhoneList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPhoneBookDlg, CDialog)
//{{AFX_MSG_MAP(CPhoneBookDlg)
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_ADDPHONE, OnAddPhone)
ON_BN_CLICKED(IDC_DELPHONE, OnDelPhone)
ON_BN_CLICKED(IDC_CLOSE, OnCloseDlg)
ON_NOTIFY(NM_DBLCLK, IDC_PHONELIST, OnDblclkPhonelist)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPhoneBookDlg message handlers
BOOL CPhoneBookDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//----------------------------------------------------------
//初始化號碼簿列表控件
m_pImageList = new CImageList;
m_hImageList = m_pImageList->GetSafeHandle();
m_pImageList->Attach(m_hImageList);
m_pImageList->Create(IDB_BITMAP1 , 16 , 1 , RGB(255,255,255));
m_ctrlPhoneList.SetImageList(m_pImageList , LVSIL_SMALL);
//用該種方法設置CListCtrl風格后,在對該控件設置單選屬性SingleSelection時會出現復選框
//m_dwPhoneListStyle = m_ctrlPhoneList.GetStyle();
//m_ctrlPhoneList.SetExtendedStyle(m_dwPhoneListStyle | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_ctrlPhoneList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_ctrlPhoneList.InsertColumn(0 , "手機號" , LVCFMT_LEFT , 120 , -1);
m_ctrlPhoneList.InsertColumn(1 , "姓名" , LVCFMT_LEFT , 80 , -1);
//----------------------------------------------------------
//----------------------------------------------------------
//讀號碼簿
m_strFileName = "PhoneBook.pbl";
CStdioFile file;
if(!file.Open(m_strFileName , CFile::modeCreate|CFile::modeNoTruncate|CFile::shareDenyNone|CFile::modeRead|CFile::typeText))
return FALSE;
char szBuf[50];
char szPhone[12];
char szName[11];
while(file.ReadString(m_strFileLine))
{
strcpy(szBuf , (LPCTSTR)m_strFileLine);
sscanf(szBuf , "%s\t%s\r\n" , szPhone , szName);
int nItem = m_ctrlPhoneList.InsertItem(m_ctrlPhoneList.GetItemCount() , szPhone , 0);
m_ctrlPhoneList.SetItemText(nItem , 1 , szName);
}
file.Close();
//----------------------------------------------------------
//----------------------------------------------------------
//初始化按鈕
if(m_nOpenFlag == 1)
{
GetDlgItem(IDC_ADDPHONE)->EnableWindow(FALSE);
GetDlgItem(IDC_DELPHONE)->EnableWindow(FALSE);
GetDlgItem(IDOK)->EnableWindow(FALSE);
}
//----------------------------------------------------------
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CPhoneBookDlg::OnClose()
{
//----------------------------------------------------------
//回收
m_pImageList->Detach();
CloseHandle(m_hImageList);
delete m_pImageList;
//----------------------------------------------------------
CDialog::OnClose();
}
void CPhoneBookDlg::OnAddPhone()
{
CAddPhoneDlg dlgAddPhone(this);
dlgAddPhone.DoModal();
}
void CPhoneBookDlg::OnDelPhone()
{
POSITION Pos = m_ctrlPhoneList.GetFirstSelectedItemPosition();
int nIndex = m_ctrlPhoneList.GetNextSelectedItem(Pos);
if(nIndex < 0)
{
MessageBox("請選擇要刪除的用戶!" , "警告" , MB_OK+MB_ICONWARNING);
return;
}
if(MessageBox("確實要刪除此通道嗎?" , "警告" , MB_OKCANCEL+MB_ICONWARNING+MB_DEFBUTTON2)==IDCANCEL)
return;
m_ctrlPhoneList.DeleteItem(nIndex);
}
void CPhoneBookDlg::OnOK()
{
CStdioFile file;
if(!file.Open(m_strFileName , CFile::modeCreate|CFile::modeWrite|CFile::typeText))
{
AfxMessageBox("號碼簿文件創建失敗!" , MB_ICONERROR);
return;
}
int nCnt = m_ctrlPhoneList.GetItemCount();
for(int i=0 ; i<nCnt ; i++)
{
CString strPhone = m_ctrlPhoneList.GetItemText(i , 0);
CString strName = m_ctrlPhoneList.GetItemText(i , 1);
m_strFileLine = strPhone + "\t" + strName + "\r\n";
file.WriteString(m_strFileLine);
}
file.Close();
CDialog::OnOK();
}
void CPhoneBookDlg::OnCloseDlg()
{
CDialog::OnCancel();
}
void CPhoneBookDlg::OnSelect()
{
POSITION Pos = m_ctrlPhoneList.GetFirstSelectedItemPosition();
int nIndex = m_ctrlPhoneList.GetNextSelectedItem(Pos);
if(nIndex < 0)
{
MessageBox("請選擇一個用戶!" , "警告" , MB_OK+MB_ICONWARNING);
return;
}
m_pDlgTest->m_SimNo = m_ctrlPhoneList.GetItemText(nIndex , 0);
m_pDlgTest->UpdateData(FALSE);
}
void CPhoneBookDlg::OnDblclkPhonelist(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
if(m_nOpenFlag == 1)
{
POSITION Pos = m_ctrlPhoneList.GetFirstSelectedItemPosition();
int nIndex = m_ctrlPhoneList.GetNextSelectedItem(Pos);
m_pDlgTest->m_SimNo = m_ctrlPhoneList.GetItemText(nIndex , 0);
m_pDlgTest->UpdateData(FALSE);
CDialog::OnCancel();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -