VC] Gegevens uit een Dialog halen?

Pagina: 1
Acties:

  • TheGhostInc
  • Registratie: November 2000
  • Niet online
Ik zit een beetje vast, ik probeer gegevens uit een Dialog te halen, nu kan dat met een global variabele, maar nu wil ik dit doen door een functie aan te roepen in de hoofdclass, en de variabele mee te geven.

Echter hoe krijg ik de naam die voor de functie moet?

Dus als ik na een druk op de knop zoiets wil doen:
code:
1
MainDialog.SetVariabele(Test);

Maar goed, hoe heet mijn MainDialog, of kan ik die zo niet aanroepen?

  • The End
  • Registratie: Maart 2000
  • Laatst online: 16:26

The End

!Beginning

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
BOOL MijnProjectNameApp::InitInstance()
{
    if (!InitATL())
        return FALSE;


    CCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);

    if (cmdInfo.m_bRunEmbedded || cmdInfo.m_bRunAutomated)
    {
        return TRUE;
    }


    // Standard initialization
    // If you are not using these features and wish to reduce the size
    //  of your final executable, you should remove from the following
    //  the specific initialization routines you do not need.

#ifdef _AFXDLL
    Enable3dControls();         // Call this when using MFC in a shared DLL
#else
    Enable3dControlsStatic();   // Call this when linking to MFC statically
#endif

    CMijnProjectNameDlg dlg;
    m_pMainWnd = &dlg;
    int nResponse = dlg.DoModal();
    if (nResponse == IDOK)
    {
        // TODO: Place code here to handle when the dialog is
        //  dismissed with OK
    }
    else if (nResponse == IDCANCEL)
    {
        // TODO: Place code here to handle when the dialog is
        //  dismissed with Cancel
    }

    // Since the dialog has been closed, return FALSE so that we exit the
    //  application, rather than start the application's message pump.
    return FALSE;
}

Dit alles staat in de MijnProjectName.cpp file. Met 'CMijnProjectNameDlg dlg;' wordt je dialoog aangemaakt. De handle naar dat window kan je overal in je programma krijgen door middel van'AfxGetMainWnd()->m_hWnd'.

  • TheGhostInc
  • Registratie: November 2000
  • Niet online
De Handle kan ik idd. aanmaken, maar als ik daarna die handle wil gebruiken geeft hij de fout melding:
code:
1
 error C2228: left of '.setKlantId' must have class/struct/union type

Met welke regel code zou ik de functie dan kunnen aanroepen?

  • The End
  • Registratie: Maart 2000
  • Laatst online: 16:26

The End

!Beginning

Wat dacht je ervan als je de instance van de class gebruikt waar je de functie in gedeclareerd hebt?

Verwijderd

Op dinsdag 16 juli 2002 13:04 schreef TheGhostInc het volgende:
De Handle kan ik idd. aanmaken, maar als ik daarna die handle wil gebruiken geeft hij de fout melding:
code:
1
 error C2228: left of '.setKlantId' must have class/struct/union type

Met welke regel code zou ik de functie dan kunnen aanroepen?
->setKlandId() ?

  • TheGhostInc
  • Registratie: November 2000
  • Niet online
Op dinsdag 16 juli 2002 13:57 schreef The End het volgende:
Wat dacht je ervan als je de instance van de class gebruikt waar je de functie in gedeclareerd hebt?
code:
1
2
3
4
5
void InvoerDialog::OnSearchButton() 
{
    ZoekenDialog Instance(this);
    Instance.DoModal(); 
}

Zo roep ik het formulier aan, en nu wil ik dus wat gegevens van het aangeroepen dialoog naar dit formulier hebben.

  • The End
  • Registratie: Maart 2000
  • Laatst online: 16:26

The End

!Beginning

Op dinsdag 16 juli 2002 14:45 schreef TheGhostInc het volgende:

[..]
code:
1
2
3
4
5
void InvoerDialog::OnSearchButton() 
{
    ZoekenDialog Instance(this);
    Instance.DoModal(); 
}

Zo roep ik het formulier aan, en nu wil ik dus wat gegevens van het aangeroepen dialoog naar dit formulier hebben.
Wil je de gegevens hebben als iemand op Ok drukt o.i.d. ?

  • TheGhostInc
  • Registratie: November 2000
  • Niet online
Nee, die gegevens kan ik afvangen,
Ik wil echter gewoon tijdens het werken gegevens naar het andere venster kunnen sturen.

  • The End
  • Registratie: Maart 2000
  • Laatst online: 16:26

The End

!Beginning

Meestal wordt er zoiets gedaan:
code:
1
2
if(Instance.DoModal() == IDOK)
   Instance.GetData(string,enzo);

In de OnOk functie in je dialog worden een aantal members van je classe ingesteld. Zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//mijndialoog.h
public:
   void GetData(CString &outstring,DWORD &outenzo);
protected:
   CString string;
   DWORD   enzo;

//mijndialoog.cpp
void mijndialoog::OnOk()
{
   string = "Wat er ook moet komen";
   enzo = 0;
}

void mijndialoog::GetData(CString &outstring,DWORD &outenzo)
{
   outstring = string;
   outenzo   = enzo;
}

  • The End
  • Registratie: Maart 2000
  • Laatst online: 16:26

The End

!Beginning

Op dinsdag 16 juli 2002 14:53 schreef TheGhostInc het volgende:
Nee, die gegevens kan ik afvangen,
Ik wil echter gewoon tijdens het werken gegevens naar het andere venster kunnen sturen.
Dat kan je met messaging doen. PostMessage() b.v. Daar heb je die window handle voor nodig :)
Pagina: 1