Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

How to chang a variable from other class in VC++?

Posted on 2001-08-09
7
219 Views
Last Modified: 2013-11-20
I have a class CADlg content a variable m_string.
In this class, i new a Object of class CBDlg. In CBDlg, I want to change the value in obj of class CADlg. HOw to implement. If possible, please send to me a example.
Thanks
0
Comment
Question by:nvlinh
7 Comments
 
LVL 1

Expert Comment

by:jacobkristensen
ID: 6371370
I'm not sure that I understand exactly what you want, but maybe something like this:

(CADlg*)GetParent()->m_string = "New value";
0
 
LVL 2

Expert Comment

by:missionImpossible
ID: 6371521
I'not sure either, but did I get it: You have a dlg in dlg?

class CADlg
{

  protected:

  CBDlg m_dlgB; // ??
}



0
 
LVL 1

Expert Comment

by:Tim_Musschoot
ID: 6371601
Hello,

2 Options:

You can change the variable from class A when dialog B is called with success :

Class CADlg
{
protected:
  long Var;
public:
  long GetVar() { return Var; }
  void SetVar(long V) { Var = V;}
}

CADlg::DoFunctionIdontKnow()
{
  CBDlg Dlg;
  if (Dlg.DoModal() == IDOK)
  {
     Var = Dlg.<your_variable>
  }

}


Second option : change the variables of A realtime while using dialog B
Suppose you want to do it in function "MyFunction"

CBDlg::MyFunction
{
  long NewValue = (3 * 6) + 9;
  (CADlg*)GetParent()->SetVar(NewValue);
  // This makes sure the value of the protected    
  // variable 'Var' is set, whatever happens in
  // dialog B
}

This last option isn't a proper way to program in c++, it has something of the VB way of life...

Sux6,
Tim Musschoot
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
LVL 31

Expert Comment

by:Zoppo
ID: 6371637
Hi nvlinh,

as you can see from previous comments there may be many possibilities
to do this which depend on the kind of problem you have. So, could you
please describe your problem a bit more detailed, at lease we need to
know how the two dialogs are related together (i.e. CBDlg is modal and
displayed from within a function of CADlg, so CADlg is the parent dialog
of CBDlg ... or CBDlg is displayed after CADlg is closed with OK).
Best would be you explain what you want your program to do in this context
in details ... even you should post some relevant code how you use the
dialogs now.

ZOPPO
0
 

Accepted Solution

by:
Thomas_Dzieran earned 25 total points
ID: 6375892
There are many ways to do it.
One way is could be this(It depends on your requirements):

When you construct you BDlg object in ADlg you can pass "this" pointer to its constructor.

CBDlgj dlg(this);
dlg.DoModal();


In the header of BDlg include ADlg.h:
#include "ADlg.h"

create a member vareiable of Adlg type:
CADlg* m_pAldg;

In the constructor of your BDlg set your BDlg member variable to pParent:
CBDlg::CBDlg(CWnd* pParent /*=NULL*/)
:CDialog(CBDlg::IDD, pParent)
{
  /.../
  m_pAdlg = (CADlg*)pParent;
}

Now in your CBdlg class you can use:
m_pAdlg->m_SomeVariable = somevalue.
m_pAdlg->SomeFunction();

This is just one way(simple), thera are other ways to.
If you have any problems, I can send you sample app
with two dlgs.
0
 
LVL 49

Expert Comment

by:DanRollins
ID: 6420499
hi Thomas_Dzieran,

Though you post is excellent, there is no way that it should be considered a finale "Answer"  The question is too ambiguous to be answered.  Please, post comments like everybody else.  Thanks!

0
 

Expert Comment

by:Thomas_Dzieran
ID: 6425830
Hi DanRollins,
Yes, I agree with your comment.
It is not a final answer.
There are many ways to accomplish this task.
Next time I will post comment to similar questions.
I'm fairly new to this site.
Thanks for advice.
Thomas Adam Dzieran


0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Change owner from userA to server Local Administrators 7 66
Prevent this page from creating additional dialogs. 3 614
sum67 challenge 35 107
zeroFront challenge 7 111
Introduction: Load and Save to file, Document-View interaction inside the SDI. Continuing from the second article about sudoku.   Open the project in visual studio. From the class view select CSudokuDoc and double click to open the header …
Introduction: Database storage, where is the exe actually on the disc? Playing a game selected randomly (how to generate random numbers).  Error trapping with try..catch to help the code run even if something goes wrong. Continuing from the seve…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question