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是不行的
怎么解决呀?求大神帮忙! 展开
我的意思是我整个代码,经过一段时间后,a变成 了3,我想调用A里面的这个时候的a(就是变化之后的a),而直接定义A是不行的
怎么解决呀?求大神帮忙! 展开
4个回答
展开全部
当然不可以,你没法获得对方的成员;
你要获得它运行的实例对象;
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);
你要获得它运行的实例对象;
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);
展开全部
申明A为B的成员函数不就可以访问A里面的变量了。。
如果要相互访问,那么设置为指针成员。
还有一种方法就是间接的方法。再定义一个类C。AB操作C中的变量。
如果要相互访问,那么设置为指针成员。
还有一种方法就是间接的方法。再定义一个类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();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
“比如说点击A的时候,a变成 了3”
此时改变a为3,只能在该A类为3。
“但是如果直接在B里面定义了A,然后调用a 的话,a是0呀。”
此时定义的A,应该是定义的A对象,那么A对象的所有数据都是初始化的,所以此时的a为0。
上述的2个a同名,但是所属的类对象不是同一个,因此不能等同。个人理解,有错误的还望大神指教。
此时改变a为3,只能在该A类为3。
“但是如果直接在B里面定义了A,然后调用a 的话,a是0呀。”
此时定义的A,应该是定义的A对象,那么A对象的所有数据都是初始化的,所以此时的a为0。
上述的2个a同名,但是所属的类对象不是同一个,因此不能等同。个人理解,有错误的还望大神指教。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是同级的窗口A跟B,在B类中声明一个A的成员,然后就能在B类中通过成员来访问A类中的变量了。记得要在B类中添加A类的头文件,另外两个类是两个对话框类。如果是一个父窗口一个子窗口,子窗口信引用父窗口中的变量,需要用GetParent()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询