MFC,想在一个对话框里面调用另一个对话的参数,怎么办呀? 10

比如说,有两个对话框AB,A里面有一个参数a(构造函数里面初始化0),比如说点击A的时候,a变成了3,但是如果直接在B里面定义了A,然后调用a的话,a是0呀。我的意思是我... 比如说,有两个对话框 A B,A里面有一个参数a(构造函数里面初始化0),比如说点击A的时候,a变成 了3,但是如果直接在B里面定义了A,然后调用a 的话,a是0呀。
我的意思是我整个代码,经过一段时间后,a变成 了3,我想调用A里面的这个时候的a(就是变化之后的a),而直接定义A是不行的

怎么解决呀?求大神帮忙!
展开
 我来答
437384801
2012-11-12 · TA获得超过1867个赞
知道小有建树答主
回答量:1299
采纳率:0%
帮助的人:513万
展开全部
当然不可以,你没法获得对方的成员;
你要获得它运行的实例对象;
2个进程的通信,麻烦点;
但是你可以通过Hwnd h=Findwindow(“ ”,窗口名字);来获取句柄
CWnd*w=Cwnd::FromHandler(h);
然后就可以做了
例如第2个对话框的成员为 int a=0;
给他够找一个方法
int getA(){return a;}

void setA(int a){this->a=a;}

那么在对话框1对用
int a=w->getA();a=a+1;
w->setA(a);
goodczs
2012-11-12 · TA获得超过2118个赞
知道小有建树答主
回答量:2251
采纳率:0%
帮助的人:944万
展开全部
申明A为B的成员函数不就可以访问A里面的变量了。。
如果要相互访问,那么设置为指针成员。
还有一种方法就是间接的方法。再定义一个类C。AB操作C中的变量。
追问
那比如说,我要在A中点击的时候调用B,然后点击B的时候出现一个MessageBox显示a的值,怎么办?申明A为B的成员函数我觉得不行。你怎么把a传给B呀?
追答
你这就属于互为成员。我上面说的方法二和三可以用。
例:
class B;

class A
{
public:
void AShow();
B *pA;
};

class B
{
public:
void BShow();
A *pB;
};

A ObjectA;
ObjectA.pA->BShow();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
快谓2763
2012-11-12
知道答主
回答量:7
采纳率:0%
帮助的人:2.6万
展开全部
“比如说点击A的时候,a变成 了3”
此时改变a为3,只能在该A类为3。

“但是如果直接在B里面定义了A,然后调用a 的话,a是0呀。”

此时定义的A,应该是定义的A对象,那么A对象的所有数据都是初始化的,所以此时的a为0。

上述的2个a同名,但是所属的类对象不是同一个,因此不能等同。个人理解,有错误的还望大神指教。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qianxun5180
2012-11-12 · TA获得超过106个赞
知道答主
回答量:76
采纳率:0%
帮助的人:35.5万
展开全部
如果是同级的窗口A跟B,在B类中声明一个A的成员,然后就能在B类中通过成员来访问A类中的变量了。记得要在B类中添加A类的头文件,另外两个类是两个对话框类。如果是一个父窗口一个子窗口,子窗口信引用父窗口中的变量,需要用GetParent()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式