Oppure

Loading
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!!

// 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