root/MainAddressBookDlg.cpp
/* [<][>][^][v][top][bottom][index][help] */
DEFINITIONS
This source file includes following definitions.
- CMainAddressBookDlg
- DoDataExchange
- BEGIN_MESSAGE_MAP
- OnDel
- OnOK
- OnAdd
- OnEdit
- OnItemchanged
/*
* Copyright (C) 2002-2003 chik, s.hiranaka
* For license terms, see the file COPYING in this directory.
*/
// MainAddressBookDlg.cpp : インプリメンテーション ファイル
//
#include "stdafx.h"
#include "pochy.h"
#include "MainAddressBookDlg.h"
#include "MainAddressBookAddDlg.h"
#include "MainAddressBookEditDlg.h"
#include "Csv.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainAddressBookDlg ダイアログ
CMainAddressBookDlg::CMainAddressBookDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMainAddressBookDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMainAddressBookDlg)
// メモ - ClassWizard はこの位置にマッピング用のマクロを追加または削除します。
//}}AFX_DATA_INIT
}
void CMainAddressBookDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMainAddressBookDlg)
DDX_Control(pDX, IDC_MAINFRAME_ADDRESSBOOK_EDIT, m_button_edit);
DDX_Control(pDX, IDC_MAINFRAME_ADDRESSBOOK_DEL, m_button_del);
DDX_Control(pDX, IDC_MAINFRAME_ADDRESS_LIST, m_lc);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMainAddressBookDlg, CDialog)
//{{AFX_MSG_MAP(CMainAddressBookDlg)
ON_BN_CLICKED(IDC_MAINFRAME_ADDRESSBOOK_DEL, OnDel)
ON_BN_CLICKED(IDC_MAINFRAME_ADDRESSBOOK_ADD, OnAdd)
ON_BN_CLICKED(IDC_MAINFRAME_ADDRESSBOOK_EDIT, OnEdit)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_MAINFRAME_ADDRESS_LIST, OnItemchanged)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMainAddressBookDlg メッセージ ハンドラ
BOOL CMainAddressBookDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CPochyApp *app = (CPochyApp*)AfxGetApp();
this->m_button_del.EnableWindow(FALSE);
this->m_button_edit.EnableWindow(FALSE);
CCsv csv(app->m_app_path+"\\address.csv");
int n, i;
int column_width[] = { 100, 200, 170 };
char* column[] = { "名前", "メールアドレス", "備考" };
LV_COLUMN lvc;
lvc.mask = LVCF_FMT|LVCF_TEXT|LVCF_WIDTH|LVCF_SUBITEM;
lvc.fmt = LVCFMT_LEFT;
for(n=0; n<3; n++){
lvc.pszText = column[n];
lvc.cx = column_width[n];
m_lc.InsertColumn(n, &lvc);
}
m_lc.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_lc.ModifyStyle(0, LVS_SHOWSELALWAYS);
for(n=0; n<csv.GetRowSize(); n++){
m_lc.InsertItem(n, csv.GetValue(n, 0));
m_lc.SetItemData(n, 0);
for(i=1; i<3; i++){
m_lc.SetItemText(n, i, csv.GetValue(n, i));
}
}
return FALSE; // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります
// 例外: OCX プロパティ ページの戻り値は FALSE となります
}
void CMainAddressBookDlg::OnDel()
{
CString address;
CString name;
CString buf;
int item;
int i;
POSITION pos = m_lc.GetFirstSelectedItemPosition();
while(pos){
item = m_lc.GetNextSelectedItem(pos);
m_lc.SetItemData(item, 1);
}
i=0;
while(i<m_lc.GetItemCount()){
if(m_lc.GetItemData(i) == 1){
m_lc.DeleteItem(i);
continue;
}
i++;
}
}
void CMainAddressBookDlg::OnOK()
{
CPochyApp *app = (CPochyApp*)AfxGetApp();
CString data;
CCsv csv(NULL);
csv.RemoveAll();
CStringArray row;
row.RemoveAll();
for(int i=0; i<m_lc.GetItemCount(); i++){
for(int j=0; j<3; j++){
// AfxMessageBox(m_lc.GetItemText(i,j));
row.Add(m_lc.GetItemText(i, j));
}
csv.AddRow(&row);
row.RemoveAll();
}
csv.Save(app->m_app_path+"\\address.csv");
CDialog::OnOK();
}
void CMainAddressBookDlg::OnAdd()
{
CMainAddressBookAddDlg ad;
ad.DoModal();
}
void CMainAddressBookDlg::OnEdit()
{
CMainAddressBookEditDlg ad;
ad.DoModal();
}
void CMainAddressBookDlg::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
if(0 < this->m_lc.GetSelectedCount()){
if(!this->m_button_del.IsWindowEnabled()){
this->m_button_del.EnableWindow();
}
if(!this->m_button_edit.IsWindowEnabled()){
this->m_button_edit.EnableWindow();
}
}else{
this->m_button_del.EnableWindow(FALSE);
this->m_button_edit.EnableWindow(FALSE);
}
*pResult = 0;
}