比如从A对话框一个按钮弹出B对话框(模式对话框),那么B对话框怎么访问A对话框的公有变量。怎么使用 GetParent()不行呢?
解决方案 »
- 关于beginpaint的使用
- 使用try catch处理异常时,是不是必须添加throw主动抛出异常?
- 我的程序在XP下用VS2005编译的MFC程序,在WIN7下运行没反应,怎么办?
- 弹出对话框中的列表控件初始化问题
- C#中的事件!
- 向CRichEditCtrl里插入图片,中文与ASCII码长度分不清?
- 哪位大哥能提供一个好的ftp控件
- 为什么不能处理WM_KEYDOWN消息?---来者给分!
- 我也是学习COM的菜鸟,我想问问大家,为什么COM需要类厂呢?为什么不在dll的引出函数中直接创建对象呢?实用类厂的好处是什么呢?
- windows下如何才能把自启动的程序删去,注:在开始-〉程序-〉启动里没有????
- sscanf的问题,急!!!
- select 10000个record然后查找其中100个,把100个条件写到select命令中,哪个快?
因为,MFC为了简化程序编写,DoModal根本没有传递任何参数。。
MFC用获得活动窗口的方法取得父窗口。
所以,最好还是给窗口B增加一个成员变量(指向A对话框的指针)。
在创建的时候初始化。
如:
CMyDialog dlg;
dlg.m_pParent=this;
dlg.DoModal();
//....
CMyDialog dlg;
dlg.m_var=var; //后面的var即为A中要传过去的变量。
你也可以不用MFC。呵,那就方便了。
当时用在app中设置全局变量来解决的
今天知道问题了 谢谢了
传递整个对象到没有必要,这样还要加入相应的头文件之类的东西,直接在B中定义一个与A中需要传递的参数相同类型的公有成员变量然后:
CMyDialog dlg;
dlg.m_var=var; //后面的var即为A中要传过去的变量。
这样传递过去之后 是否只能读,不能更改var的值?
相当于"传值",而不是传"地址"
如果内容较为复杂,可以定义结构体
比如
struct dlgParam
{
int xxx;
……
}dlgParam param;SendMessage(hnd,WM_XXX,¶m,NULL)
收到消息再拆开我一般这么作
Class A
{
CString strA;
}//对话框B
Class B
{
CString strB;
strB=A.strA; //不过首先要在B的.CPP文件中将A的.h引入
}
你这样做,估计会有一个相互包含的问题。比如比如从A对话框一个按钮弹出B对话框(模式对话框),那么类A要包含类B的头文件。
而
Class B
{
CString strB;
strB=A.strA; //不过首先要在B的.CPP文件中将A的.h引入
}
dlg.m_var=var; //后面的var即为A中要传过去的变量。 转递变量?这样会不会太耗内存。转递地址好不好?如:
CMyDialog dlg;
dlg.m_pVar=&var; //后面的var即为A中要传过去的变量。