📄 addresslistdlg.cpp
字号:
// AddressListDlg.cpp : implementation file
//
#include "stdafx.h"
#include "AddressListDll.h"
#include "AddressListDlg.h"
#include <afxtempl.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define SAVE_FILE_FOLDER _T("C:\\WINDOWS\\system32\\MySaveFile")
#define ADDRESSLIST_FILE_PATH _T("C:\\WINDOWS\\system32\\MySaveFile\\AddressList.ini")
/////////////////////////////////////////////////////////////////////////////
// CAddressListDlg dialog
CAddressListDlg::CAddressListDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAddressListDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CAddressListDlg)
m_csName = _T("");
m_csTelephone = _T("");
m_csAddress = _T("");
//}}AFX_DATA_INIT
m_nWidth = 0;
m_nHeight = 0;
m_bIsLookOver = FALSE;
m_bExtend = FALSE;
}
void CAddressListDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAddressListDlg)
DDX_Control(pDX, IDC_ADDRESSLIST_LISTCRTL, m_addresslist);
DDX_Text(pDX, IDC_EDIT_NAME, m_csName);
DDX_Text(pDX, IDC_EDIT_TELEPHONE, m_csTelephone);
DDX_Text(pDX, IDC_EDIT_ADDRESS, m_csAddress);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAddressListDlg, CDialog)
//{{AFX_MSG_MAP(CAddressListDlg)
ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
ON_BN_CLICKED(IDC_BUTTON_LOOKOVER, OnButtonLookover)
ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnButtonCancel)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAddressListDlg message handlers
BOOL CAddressListDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_CommonListCtrl.InitListCtrl( &m_addresslist);
// Set value for list control
// Read file
if ( !myFile.Open(ADDRESSLIST_FILE_PATH, CFile::modeRead|CFile::typeText, NULL) )
{
AfxMessageBox( _T("^_^ 尊敬的用户,你第一次使用该系统,你的通讯录里还没有好友的信息;\r\n 请先添加好友的信息!") );
m_bExtend = TRUE;
return FALSE;
}
CString csBuf = "";
CStringArray aCsPersonInfo;
while ( myFile.ReadString(csBuf) )
{
aCsPersonInfo.RemoveAll();
int nResult = SplitString( csBuf, "|", aCsPersonInfo );
PersonInfo_t stPersonInfo;
stPersonInfo.csName = aCsPersonInfo.GetAt(0);
stPersonInfo.csTelephone = aCsPersonInfo.GetAt(1);
stPersonInfo.csAddress = aCsPersonInfo.GetAt(2);
m_CommonListCtrl.SetListCtrlText( &m_addresslist, stPersonInfo );
}
myFile.Close();
// Extend/shrink Dialog
FlexDialog();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CAddressListDlg::OnButtonAdd()
{
UpdateData( TRUE );
if ( m_csName.IsEmpty() )
{
AfxMessageBox( "姓名不能为空!" );
return;
}
if ( m_csTelephone.IsEmpty() )
{
AfxMessageBox( "电话不能为空!" );
return;
}
if ( m_csAddress.IsEmpty() )
{
AfxMessageBox( "地址不能为空!" );
return;
}
PersonInfo_t stPersonInfo;
stPersonInfo.csName = m_csName;
stPersonInfo.csTelephone = m_csTelephone;
stPersonInfo.csAddress = m_csAddress;
// Set value for list control
m_CommonListCtrl.SetListCtrlText( &m_addresslist, stPersonInfo );
// Create MySaveFile folder.
CFileFind finder;
BOOL bFindMySaveFolder = finder.FindFile( SAVE_FILE_FOLDER );
if ( !bFindMySaveFolder )
{
BOOL bSuccCreate = CreateDirectory( SAVE_FILE_FOLDER, NULL ) ;
if ( !bSuccCreate )
{
AfxMessageBox( _T("^_^ 创建文件夹失败!") );
return;
}
}
// Create AddressList.ini file.
// Open AddressList.ini file.
if ( !myFile.Open( ADDRESSLIST_FILE_PATH, CFile::modeCreate|CFile::modeWrite|
CFile::typeText|CFile::modeNoTruncate, &Fe) )
{
AfxMessageBox( _T("^_^ 打开文件失败!") );
return;
}
myFile.SeekToEnd();
CString csPersonInfo = m_csName;
csPersonInfo += "|";
csPersonInfo += m_csTelephone;
csPersonInfo += "|";
csPersonInfo += m_csAddress;
csPersonInfo += "\r\n";
// Write file
myFile.WriteString( csPersonInfo );
// Close file
myFile.Close();
// Clear editbox
m_csName = _T("");
m_csTelephone = _T("");
m_csAddress = _T("");
UpdateData( FALSE );}
void CAddressListDlg::OnButtonLookover()
{
m_bIsLookOver = TRUE;
CString csLookOver = _T("");
GetDlgItemText( IDC_BUTTON_LOOKOVER,csLookOver );
if( m_bIsLookOver == TRUE && csLookOver == _T("查看>>") )
{
if ( m_bExtend == TRUE )
{
AfxMessageBox( _T("^_^ 信息列表已经打开了,点击查看没有意义!") );
return;
}
// Change button caption
SetDlgItemText( IDC_BUTTON_LOOKOVER, _T("<<隐藏") );
// Extend dialog
SizeWindow( m_nReducedHeight, false );
}
else
{
// Change button caption
SetDlgItemText( IDC_BUTTON_LOOKOVER, _T("查看>>") );
// Shrink dialog
SizeWindow( m_nReducedHeight,true );
}
//UpdateWindow();
}
void CAddressListDlg::FlexDialog()
{
CRect dlgRect, Rect1, Rect2,desktopRect;
GetWindowRect( dlgRect );
GetDesktopWindow()->GetWindowRect( desktopRect );
//MoveWindow(0,0, (desktopRect.Width())/2, (desktopRect.Height())/2 );
m_nWidth = dlgRect.Width();
m_nHeight = dlgRect.Height();
m_dx = 8;
m_dy = 8;
::SetTimer( this->m_hWnd, 1, 3, NULL );
GetDlgItem(IDC_ADDRESSLIST_LISTCRTL)->GetWindowRect( Rect1 );
GetDlgItem(IDC_TEMP)->GetWindowRect( Rect2 );
m_nReducedHeight = int( Rect1.Height()+(Rect1.top -Rect2.bottom)/0.9 );
dlgRect.bottom -= int( Rect1.Height()+(Rect1.top -Rect2.bottom)/0.9 );
return;
}
void CAddressListDlg::SizeWindow(int nReduceHeight, bool bExtend)
{
CRect rect;
GetWindowRect(&rect);
if(bExtend)
{
for (int i= 0; i < nReduceHeight; i++)
{
rect.bottom--;
MoveWindow(&rect);
}
}
else
{
for (int i= 0; i < nReduceHeight; i++)
{
rect.bottom++;
MoveWindow(&rect);
}
}
return;
}
void CAddressListDlg::OnButtonCancel()
{
CDialog::OnCancel();
}
void CAddressListDlg::OnTimer(UINT nIDEvent)
{
CRect dlgRect,desktopRect;
GetWindowRect( dlgRect );
GetDesktopWindow()->GetWindowRect( desktopRect );
if( 1 == nIDEvent )
{
MoveWindow( (-m_dx+desktopRect.Width() - dlgRect.Width())/2,(-m_dy+desktopRect.Height() - dlgRect.Height())/2 ,
+m_dx+dlgRect.Width(),m_nHeight-m_nReducedHeight );
if( dlgRect.Width() >= m_nWidth )
{
m_dx = 0;
}
if( dlgRect.Height() >= m_nHeight )
{
m_dy = 0;
}
}
if( (dlgRect.Width() >= m_nWidth) )
{
::KillTimer( this->m_hWnd, 1 );
}
CDialog::OnTimer( nIDEvent );
}
int CAddressListDlg::SplitString(const CString &csInput, const CString &csDelimiter, CStringArray &aResults)
{
int nPos = -1;
int nNewPos = -1;
int nInputSize = csInput.GetLength();
int nDelimiterSize = csDelimiter.GetLength();
int nNumFound = 0;
CString csDstString;
CArray<int, int> aPositions;
nNewPos = csInput.Find(csDelimiter, 0);
if( nNewPos < 0 )
{
aResults.Add( csInput );
return 0;
}
while( nNewPos > nPos )
{
nNumFound++;
aPositions.Add( nNewPos );
nPos = nNewPos;
nNewPos = csInput.Find( csDelimiter, nPos+nDelimiterSize );
}
for( int i=0; i <= aPositions.GetSize(); i++ )
{
if( i == 0 )
{
csDstString = csInput.Mid( i, aPositions[i] );
}
else
{
int nOffset = aPositions[i-1] + nDelimiterSize;
if( nOffset < nInputSize )
{
if( i == aPositions.GetSize() )
{
csDstString = csInput.Mid(nOffset);
}
else if( i > 0 )
{
csDstString = csInput.Mid( aPositions[i-1] + nDelimiterSize, aPositions[i] - aPositions[i-1] - nDelimiterSize );
}
else
{
// Doing nothing.
}
}
}
if( csDstString.GetLength() >= 0 )
{
aResults.Add( csDstString );
}
}
return nNumFound;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -