21/07/11 12:49
tincap
Ciao ho una DIALOG con all'interno una listbox in cui visualizzo soltanto il campo principale(il cognome). La listbox si carica automaticamente alla open.
Olre al cognome però ho anche il nome e mail address che devo far apparire nella mia dialog nelle rispettive edit box solo quando premo il tasto get.
Ora nessun problema per il cognome dato che è già nella listbox ma come recupero gli altri dati?
grazie se potete!!
Olre al cognome però ho anche il nome e mail address che devo far apparire nella mia dialog nelle rispettive edit box solo quando premo il tasto get.
Ora nessun problema per il cognome dato che è già nella listbox ma come recupero gli altri dati?
grazie se potete!!
// 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); }
aaa