Hallo allemaal, ik ben een applicatie aan het maken in eMbedded Visual C++ en maak deze voor PPC2003. Nu heb ik een hoofdvenster gemaakt waarin ik bepaalde dingen doe. Maar ik wil de gebruiker de mogelijkheid geven om iets in te voeren waar ik dan mee ga zoeken in de hoofdapplicatie. Dus ik heb een dialoog venster gemaakt met een editbox en een Ok en een Cancel knop.
Zo gauw ik op de Ok knop in het dialoog venster roep ik een functie aan in de hoofdapplicatie die de zoekterm in een variabele zet. Alleen gaat dit niet goed. Als ik ga debuggen dan zie ik dat de functie goed aangeroepen wordt en dat de variabele ook wordt doorgegeven. Alleen als ik terug kom in de hoofdapp dan is de variabele weer leeg
Hoe kan dit en waarom gebeurt dit en hoe kan ik het oplossen?
Wat code.
1. De OnOk van het dialoogvenster waar de waarde wordt ingevoerd:
2. De functie die de variabele goed zet.
3. De functie die het dialoog venster opent
4. De variabele die ik probeer te vullen
Zo gauw ik op de Ok knop in het dialoog venster roep ik een functie aan in de hoofdapplicatie die de zoekterm in een variabele zet. Alleen gaat dit niet goed. Als ik ga debuggen dan zie ik dat de functie goed aangeroepen wordt en dat de variabele ook wordt doorgegeven. Alleen als ik terug kom in de hoofdapp dan is de variabele weer leeg
Wat code.
1. De OnOk van het dialoogvenster waar de waarde wordt ingevoerd:
C++:
1
2
3
4
5
6
7
8
| void CSearchDialog::OnOK() { // TODO: Add extra validation here UpdateData(TRUE); CRFIDDemoDlg bla; bla.SetSearchTerm(m_strSearchTerm); CDialog::OnOK(); } |
2. De functie die de variabele goed zet.
C++:
1
2
3
4
| void CRFIDDemoDlg::SetSearchTerm(CString _strSearchTerm) { strSearchTerm = _strSearchTerm; } |
3. De functie die het dialoog venster opent
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
| void CRFIDDemoDlg::OnSBank1() { // TODO: Add your control notification handler code here CSearchDialog dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK) { MessageBox(strSearchTerm, TEXT("Info"), MB_OK); m_strBank1 = strSearchTerm; UpdateData(FALSE); } else if (nResponse == IDCANCEL) { MessageBox(TEXT("Cancel clicked"), TEXT("Info"), MB_OK); } } |
4. De variabele die ik probeer te vullen
C++:
1
2
| public: CString strSearchTerm; |
Hail to the king baby!