// finestra di dialogo CAboutDlg utilizzata per visualizzare le informazioni sull'applicazione.
class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();
// Dati della finestra di dialogo
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // supporto DDX/DDV
// Implementazione
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()
// finestra di dialogo CAddressBookDlg
CAddressBookDlg::CAddressBookDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CAddressBookDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CAddressBookDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_COGNOME, m_Cognome);
DDX_Control(pDX, IDC_NOME, m_Nome);
DDX_Control(pDX, IDC_EMAIL, m_EMail);
DDX_Control(pDX, IDC_CB_START, m_cbStart);
DDX_Control(pDX, IDC_CB_STOP, m_cbStop);
DDX_Control(pDX, IDC_CB_FINECICLO, m_cbFineciclo);
DDX_Control(pDX, IDC_CB_ALLARME, m_cbAllarme);
DDX_Control(pDX, IDC_LISTBOX, m_ListName);
DDX_Control(pDX, IDC_ADD, m_editbox);
DDX_Control(pDX, IDC_DELETE, m_removebox);
DDX_Control(pDX, IDC_GET, m_getbox);
}
BEGIN_MESSAGE_MAP(CAddressBookDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BTN_SAVE, &CAddressBookDlg::OnBnClickedBtnSave)
ON_BN_CLICKED(IDC_RESET_BTN, &CAddressBookDlg::OnBnClickedResetBtn)
ON_BN_CLICKED(IDC_CB_START, &CAddressBookDlg::OnBnClickedCbStart)
ON_BN_CLICKED(IDC_CB_STOP, &CAddressBookDlg::OnBnClickedCbStop)
ON_BN_CLICKED(IDC_CB_FINECICLO, &CAddressBookDlg::OnBnClickedCbFineciclo)
ON_BN_CLICKED(IDC_CB_ALLARME, &CAddressBookDlg::OnBnClickedCbAllarme)
// ON_WM_CTLCOLOR()
ON_BN_CLICKED(IDC_ADD, &CAddressBookDlg::OnBnClickedAdd)
ON_BN_CLICKED(IDC_GET, &CAddressBookDlg::OnBnClickedGet)
ON_BN_CLICKED(IDC_DELETE, &CAddressBookDlg::OnBnClickedDelete)
END_MESSAGE_MAP()
static LONG _FileLen( wchar_t *pstrFullPath )
{
struct _stat64i32 buf;
if( _wstat64i32( (const wchar_t *)pstrFullPath, &buf ) != -1 )
return buf.st_size;
return 0;
}
// gestori di messaggi di CAddressBookDlg
BOOL CAddressBookDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// Aggiungere la voce di menu "Informazioni su..." al menu di sistema.
// IDM_ABOUTBOX deve trovarsi tra i comandi di sistema.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Impostare l'icona per questa finestra di dialogo. Il framework non esegue questa operazione automaticamente
// se la finestra principale dell'applicazione non è una finestra di dialogo.
SetIcon(m_hIcon, TRUE); // Impostare icona grande.
SetIcon(m_hIcon, FALSE); // Impostare icona piccola.
// TODO: aggiungere qui inizializzazione aggiuntiva.
long iFileSize = _FileLen( _T( "Contatti.txt" ) );
int iRecsNum = (INT)(iFileSize / sizeof( struct tagItem ) );
int i;
FILE * pFile;
pFile = fopen( "Contatti.txt" , "a+b" );
for(i=0; i<iRecsNum; i++)
{
fread(&m_ItemData, 1, sizeof( struct tagItem ), pFile);
m_ListName.AddString(m_ItemData.m_szCognome);
}
fclose (pFile);
UpdateData(FALSE);
return TRUE; // restituisce TRUE
}
void CAddressBookDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}
void CAddressBookDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // contesto di dispositivo per il disegno
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// Centrare l'icona nel rettangolo client.
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Disegnare l'icona
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
// Il sistema chiama questa funzione per ottenere la visualizzazione del cursore durante il trascinamento
// della finestra ridotta a icona.
HCURSOR CAddressBookDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
//------------------------------------------------
// salvataggio record
//------------------------------------------------
void CAddressBookDlg::OnBnClickedBtnSave()
{
FILE *pFile;
pFile = fopen("Contatti.txt", "a+b" );
if( m_Cognome.GetWindowTextLengthW() == 0 )
{
AfxMessageBox(L"You must specify the Surname.");
return;
}
if( m_Nome.GetWindowTextLengthW() == 0 )
{
AfxMessageBox(L"You must specify the Name.");
return;
}
if( m_EMail.GetWindowTextLengthW() == 0 )
{
AfxMessageBox(L"You must enter a mail address.");
return;
}
UpdateData(TRUE);
CString sValue;
// Cognome
m_Cognome.GetWindowTextW( sValue ); wsprintf( m_ItemData.m_szCognome, sValue );
// Nome
m_Nome.GetWindowTextW( sValue ); wsprintf( m_ItemData.m_szNome, sValue );
// Email
m_EMail.GetWindowTextW( sValue ); wsprintf( m_ItemData.m_szEMail, sValue );
// Start
m_ItemData.m_bStart = m_cbStart.GetCheck() ;
// Stop
m_ItemData.m_bStop = m_cbStop.GetCheck() ;
// Fineciclo
m_ItemData.m_bFineCiclo = m_cbFineciclo.GetCheck() ;
// Allarme
m_ItemData.m_bAllarme = m_cbAllarme.GetCheck() ;
fwrite( &m_ItemData, 1, sizeof( struct tagItem ), pFile );
fclose( pFile );
UpdateData(FALSE);
OnBnClickedAdd();
OnBnClickedResetBtn();
}
//------------------------------------------------
// reset maschera
//------------------------------------------------
void CAddressBookDlg::OnBnClickedResetBtn()
{
m_Cognome.SetWindowTextW( _T("") );
m_Nome.SetWindowTextW( _T("") );
m_EMail.SetWindowTextW( _T("") );
m_cbStart.SetCheck (NULL) ;
m_cbStop.SetCheck(NULL) ;
m_cbFineciclo.SetCheck(NULL);
m_cbAllarme.SetCheck(NULL);
this->UpdateData(FALSE);
}
void CAddressBookDlg::OnBnClickedCbStart()
{
m_ItemData.m_bStart = m_cbStart.GetCheck();
}
void CAddressBookDlg::OnBnClickedCbStop()
{
m_ItemData.m_bStop = m_cbStop.GetCheck();
}
void CAddressBookDlg::OnBnClickedCbFineciclo()
{
m_ItemData.m_bFineCiclo = m_cbFineciclo.GetCheck();
}
void CAddressBookDlg::OnBnClickedCbAllarme()
{
m_ItemData.m_bAllarme = m_cbAllarme.GetCheck();
}
void CAddressBookDlg::OnBnClickedAdd()
{
UpdateData();
m_ListName.AddString(m_ItemData.m_szCognome);
UpdateData(FALSE);
}
void CAddressBookDlg::OnBnClickedGet()
{
CString sCognome, sNome, sEmail;
m_ListName.GetText(m_ListName.GetCurSel(), sCognome); m_Cognome.SetWindowText( sCognome );
m_Nome.SetWindowText( sNome );
m_EMail.SetWindowText( sEmail );
/*m_ListName.GetText(m_ListName.GetCurSel(), sCognome); m_Nome.SetWindowText( sNome ); m_EMail.SetWindowText( sEmail); */
}
void CAddressBookDlg::OnBnClickedDelete()
{
UpdateData();
m_ListName.DeleteString(m_ListName.GetCurSel());
UpdateData(FALSE);
}