Toon posts:

[vc++6] probleem met variabellen tussen 2 dialogen

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb een probleem op een variabel wat in het hoofd dialog staat naar een child te krijgen

het souce programmatje kun je douw loaden op home page van mij.
ik snap niet waarom het niet mogelijk is als ik een variabel in het main dialog maak.
en hem dan wil benaderen of veranderen via een child dialog.
zegt de compiler het gaat niet is geen lid van dit dialog venster????
zou iemand zo vriendelijk willen zijn om mij een uitleg te geven warom dit niet zo gaat????

liefst een verwijzign naar een home page waar info staat hoe dit in zijn werk gaat denk dat dit een
dingetje is voor de standaard c++ taal en niet de visual gerelateerde taal!!!

down load source kun je vinden op:
http://palcopy.com/down_l...variabel_of_2_windows.zip

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Kun je misschien alleen de relevante code uit je source isoleren en dan hier posten? Het is niet de bedoeling dat we je hele applicatie moeten gaan debuggen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
oke
even op zoeken


deze variabellen staan in dialog 1

CString m_editbox1;
CString m_TestOutput;

als ik met domodal een nieuw dialog maak en die dialog 2 noem
kan ik bijvoorbeel
m_TestOutput niet lezen of er iets in
kun je mij uit leggen warom dit niet zo gaat als ik mij dat gedacht heb?????
heb het al geprobeerd met
bijvoorbeel
m_nieuweText = dialog1.m_testOutput;
of
m_nieuweText = dialog1->m_testOutput;
en natuurlijk heb ik deze als eerste geprobeerd
m_nieuweText = m_testOutput;
werken alle 3 niet warom doet het het zo niet als je in verschilende dialoge werkt is toch 1 programma??????

Verwijderd

Topicstarter
in de hoofd dialog is de volgede variabel
wat ik door midel van een invoer een text in kan zetten

C++:
1
2
 
CString m_TestOutput;


in de child dialog dat ik maak door middel van domodal heb gemaakt wil ik de waardes van het 1e dialog halen want die staan hier in
als ik op knopje probleem druk dan: springt hij naar deze source code
m_waardeChild is een uit voer vakje op het scherm in het child dialog dat ik door middel van domodal heb gemaakt
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
void CChildDialog::OnBUTTONproblem() 
{
    // TODO: Add your control notification handler code here
//  m_waardeChild = "this works";
//  m_waardeChild = CComunicationbetweenvariabelof2windowsDlg.m_TestOutput;// dos not work
//  m_waardeChild = CComunicationbetweenvariabelof2windowsDlg->m_TestOutput;// dos not work
    m_waardeChild = CComunicationbetweenvariabelof2windowsDlg* m_TestOutput;

// can anny one tel me how this works in c++ i dont understand
// to get data from the other window up in here?????    
    
    UpdateData(FALSE);  
}

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Waarom het niet werkt is vrij duidelijk, en het is inderdaad een standaard C++ probleem. Als je de members van een ander object wil gebruiken, dan moet je een naam van dat object hebben ( Meestal heeft een object maar 1 naam, maar met references kun je er meer hebben) of een pointer naar dat object.

Goed, je wil concreet dus in een object genaamd dialog2 een variabele uit het hoofd dialoog object gebruiken. Dan zijn er dus twee vragen: 1. welke naam of namen heeft dat object, en 2. welk van die namen is zichtbaar (in scope). Dat gaat dus niet werken, en het is ook een slecht ontwerp (gelukkig -altijd vervelend als een slecht ontwerp wel werkt.). De reden is dat je child dialoog dat niet herbruikbaar is, want afhankelijk van de hoofd dialoog.

Een correct ontwerp is bijvoorbeeld om de data tijdelijk op te slaan in de child dialoog, en het initiatief om die data eruit te halen aan de parent over te laten. Een andere oplossing is om een interface mee te geven aan de child constructor.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Topicstarter
een interface lijkt me wel wat ik ben redelijk nieuw hier in.
ik ben nog maar aan het beginnen

maar toch alvast bedank dat je antwoord hebt gegeven

zo als ik het begrijp
zou ik dus de waardes moeten opslaan in het child dialog
en het 1e dialog(parent) zou ik de data heen moeten sturen

maar dan heb ik 1 probleem
anders om werkt dat ook niet want
de invoer button zit in dialog 1
hoe moet ik de data bij invoer naar dialog 2 krijgen

of hoe werkt interface?????
heb ik nog niets van ge lezen in c++ boek
heb je een link hier over ???
met vriendelijke groeten m.t. dijkstra

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Eh, nee. Dan begrijp je het toch weer verkeerd.
en het 1e dialog(parent) zou ik de data heen moeten sturen
C++ is object-oriented. Dan is het handig om niet te denken in termen van "ik" maar in termen van objecten. Dialoog 2 is een object. Het weet niets van object 1 af, anders dan wat hem in z'n constructor verteld is - en dat is zo weinig mogelijk. Als dialoog 1, de hoofddialoog dus data nodig heeft, dan moet die erom vragen.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1