我用VC写界面程序时,见了几个对话框,一个里面定义了一个PUBLIC变量数组,然后我要用另外的对话框去访问这个数组,如何实现啊????
当我在一个对话框1里调用另一个对话框2,然后,想让对话框2调用对话框1里的变量的值如何调用??使用GetWindow()函数为什么不行啊??
求各位大侠帮忙!!急急!!
解决马上送分!!!
谢谢
当我在一个对话框1里调用另一个对话框2,然后,想让对话框2调用对话框1里的变量的值如何调用??使用GetWindow()函数为什么不行啊??
求各位大侠帮忙!!急急!!
解决马上送分!!!
谢谢
解决方案 »
- 为何可以将一个函数名(比如这里的窗口过程函数 WndProc)赋给 wndclass变量的 lpfnWndProc 成员呢?
- 在一个主机里面模拟多个MAC 地址主机
- 关于嵌入word的问题
- CListCtrl排序问题!
- 怎样实现windows media player最小化后,出现在taskbar中的效果?
- csdn里面的技术文档(不是社区) 如何才能让自己管理?
- 获得了一个窗口的HWND,如何知道标题栏上有几个系统按钮(最大化、最小化),哪个可用或不可用?
- html模板加载时出现“invalid character”错误
- Beep
- 一个想成为程序员的人的困惑
- 求助:关于文件读写的问题
- 怎么通过ASCII码或VK_KEY得到键盘的键名????
假设父对话框为CFatherDlg;
子对话框为CSonDlg,其为CFatherDlg的成员变量;
在CFatherDlg中的变量有:
public:
int m_nValue;
CSonDlg m_SonDlg;
在CSonDlg中的变量有:
public:
int m_nValue;
CButton m_btnTansfer;//传递m_nValue到父对话框的m_nValue;为按钮m_btnTansfer添加消息响应函数:
void CSonDlg::OnButtonTransfer()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);//根据需要,是否有需要更新的控件变量
m_nValue=100;//如果m_nValue不是控件变量;
((CFatherDlg*)(CDialog*)GetParent())->m_nValue=m_nValue;
////////注意这里要强制转换两次!!!
//1:还可以利用这个方法直接给CFatherDlg中的控件赋值
//((CFatherDlg*)(CDialog*)GetParent())->SetDlgItemInt(IDC_EDIT_VALUE,m_nValue);
//2:直接从父对话框中获得变量,传到子对话框
//((CFatherDlg*)(CDialog*)GetParent())->GetDlgItem(IDC_EDIT_VALUE)->GetWindowText(m_strValue);m_strValue是CSonDlg的成员变量;可以直接看到变化;
//m_nYear=((CFatherDlg*)(CDialog*)GetParent())->m_nValue
}参考http://blog.csdn.net/happyparrot/archive/2004/06/07/21589.aspx
或就定义一个指针变量指向对话框1中的数组(这个变量也是public),
当对话框1调用对话框2时, 把对话框2的这个变量赋值。
p=p->GetParent();//得到对话框2的窗口
CWorkspaceBar*pp;
pp=(CWorkspaceBar *)p->GetParent();
int nnn=pp->GeoCharacterSet.GetSize();
我在第二个对话框的TABCTRL里的树控件下调用窗口CWorkspaceBar里的ARRAY:GeoCharacterSet,为什么得到的GetSize()的值是0;
方法二:在 CxxxApp 中建立全部变量:CxxxApp the App; 将数组放在CxxxApp中,那么其它类就可以共同使用了。
CTestDlg::CTestDlg(CTestDlg2* aa)
{
m_TestDlg2 = aa;
}
在CTestDlg 中添加成员变量 CTestDlg2 *m_TestDlg2,
然后你就可以访问CTestDlg2中的变量或叔祖了